Hello TypeScript
我們從一個簡單的例子開始。
将以下代碼複制到
hello.ts
中:
function sayHello(person: string) {
return 'Hello, ' + person;
}
let user = '大前端之旅';
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 隻會在編譯時對類型進行靜态檢查,如果發現有錯誤,編譯的時候就會報錯。而在運作時,與普通的 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));