本文摘自
https://ts.xcatliu.com/introduction/hello-typescript
Hello TypeScript
我們從一個(gè)簡單的例子開始。
將以下代碼復(fù)制到 hello.ts 中:
function sayHello(person: string) {
return 'Hello, ' + person;
}
let user = 'Tom';
console.log(sayHello(user));
然后執(zhí)行
tsc hello.ts
這時(shí)候會生成一個(gè)編譯好的文件 hello.js:
function sayHello(person) {
return 'Hello, ' + person;
}
var user = 'Tom';
console.log(sayHello(user));

有點(diǎn)神奇
這句是重點(diǎn):
TypeScript 中,使用
:指定變量的類型,:的前后有沒有空格都可以。
上述例子中,我們用 : 指定 person 參數(shù)類型為 string。但是編譯為 js 之后,并沒有什么檢查的代碼被插入進(jìn)來。
TypeScript 只會進(jìn)行靜態(tài)檢查,如果發(fā)現(xiàn)有錯(cuò)誤,編譯的時(shí)候就會報(bào)錯(cuò)。
let是 ES6 中的關(guān)鍵字,和var類似,用于定義一個(gè)局部變量,可以參閱 let 和 const 命令。
下面嘗試把這段代碼編譯一下:
function sayHello(person: string) {
return 'Hello, ' + person;
}
?
let user = [0, 1, 2];
console.log(sayHello(user));
編輯器中會提示錯(cuò)誤,編譯的時(shí)候也會出錯(cuò):
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 編譯的時(shí)候即使報(bào)錯(cuò)了,還是會生成編譯結(jié)果,我們?nèi)匀豢梢允褂眠@個(gè)編譯之后的文件。
如果要在報(bào)錯(cuò)的時(shí)候終止 js 文件的生成,可以在 tsconfig.json 中配置 noEmitOnError 即可。關(guān)于 tsconfig.json,請參閱官方手冊(中文版)。