Hello TypeScript

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

將以下程式碼複製到 hello.ts 中:

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

然後執行

tsc hello.ts

這時候會產生一個編譯好的檔案 hello.js

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

TypeScript 中,使用 : 指定變數的型別,: 的前後有沒有空格都可以。

上述例子中,我們用 : 指定 person 引數型別為 string。但是編譯為 js 之後,並沒有什麼檢查的程式碼被插入進來。

TypeScript 只會進行靜態檢查,如果發現有錯誤,編譯的時候就會報錯。

let 是 ES6 中的關鍵字,和 var 類似,用於定義一個區域性變數,可以參閱 let 和 const 命令

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

function sayHello(person: string) {
return 'Hello, ' + person;
}
let user = [0, 1, 2];
console.log(sayHello(user));

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

index.ts(6,22): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

但是還是生成了 js 檔案:

function sayHello(person) {
return 'Hello, ' + person;
}
var user = [0, 1, 2];
console.log(sayHello(user));

TypeScript 編譯的時候即使報錯了,還是會產生編譯結果,我們仍然可以使用這個編譯之後的檔案。

如果要在報錯的時候終止 js 檔案的產生,可以在 tsconfig.json 中配置 noEmitOnError 即可。關於 tsconfig.json,請參閱官方手冊中文版)。