天天看點

Hello TypeScript

Hello TypeScript

我們從一個簡單的例子開始。

将以下代碼複制到 ​

​hello.ts​

​ 中:

function sayHello(person: string) {
    return 'Hello, ' + person;
}

let user = '大前端之旅';
console.log(sayHello(user));      

然後執行

tsc hello.ts      
Hello TypeScript

這時候會生成一個編譯好的檔案 ​

​hello.js​

​:

function sayHello(person) {
    return 'Hello, ' + person;
}
var user = 'Tom';
console.log(sayHello(user));
      

在 TypeScript 中,我們使用 ​

​:​

​ 指定變量的類型,​

​:​

​ 的前後有沒有空格都可以。

上述例子中,我們用 ​

​:​

​ 指定 ​

​person​

​ 參數類型為 ​

​string​

​。但是編譯為 js 之後,并沒有什麼檢查的代碼被插入進來。

這是因為 TypeScript 隻會在編譯時對類型進行靜态檢查,如果發現有錯誤,編譯的時候就會報錯。而在運作時,與普通的 JavaScript 檔案一樣,不會對類型進行檢查。

如果我們需要保證運作時的參數類型,還是得手動對類型進行判斷:

function sayHello(person: string) {
    if (typeof person === 'string') {
        return 'Hello, ' + person;
    } else {
        throw new Error('person is not a string');
    }
}

let user = 'Tom';
console.log(sayHello(user));      

> ​

​let​

​ 是 ES6 中的關鍵字,和 ​

​var​

​ 類似,用于定義一個局部變量。

下面嘗試把這段代碼編譯一下:

function sayHello(person: string) {
    return 'Hello, ' + person;
}

let user = [0, 1, 2];
console.log(sayHello(user));      

編輯器中會提示錯誤,編譯的時候也會出錯:

hello.ts:6:22 - error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.      
function sayHello(person) {
    return 'Hello, ' + person;
}
var user = [0, 1, 2];
console.log(sayHello(user));      

繼續閱讀