基本語法
TypeScript 是 JavaScript 的型別超集,這意味著所有 JavaScript 程式碼都是有效的 TypeScript 程式碼。TypeScript 在此基礎上新增了許多新功能。
TypeScript 使 JavaScript 更像是一種強型別,物件導向的語言,類似於 C#和 Java。這意味著 TypeScript 程式碼往往更容易用於大型專案,並且程式碼往往更容易理解和維護。強型別還意味著語言可以(並且是)預編譯,並且不能為變數分配超出其宣告範圍的值。例如,當 TypeScript 變數宣告為數字時,你無法為其指定文字值。
這種強大的鍵入和麵向物件使 TypeScript 更易於除錯和維護,這些是標準 JavaScript 中最弱點的兩個。
輸入宣告
你可以向變數,函式引數和函式返回型別新增型別宣告。型別是在變數名後跟冒號後寫的,如下所示:var num: number = 5;
編譯器將在編譯期間檢查型別(如果可能)並報告型別錯誤。
var num: number = 5;
num = "this is a string"; // error: Type 'string' is not assignable to type 'number'.
基本型別是:
-
number
(整數和浮點數) -
string
-
boolean
-
Array
。你可以指定陣列元素的型別。定義陣列型別有兩種等效方法:Array<T>
和T[]
。例如:number[]
- 陣列Array<string>
- 字串陣列
-
元組。元組具有固定數量的具有特定型別的元素。
[boolean, string]
- 元組,其中第一個元素是布林值,第二個元素是字串。[number, number, number]
- 三個數字的元組。
-
{}
- 物件,你可以定義其屬性或索引器{name: string, age: number}
- 具有名稱和年齡屬性的物件{[key: string]: number}
- 由字串索引的數字字典
-
enum
-{ Red = 0, Blue, Green }
- 對映到數字的列舉 -
功能。你可以為引數和返回值指定型別:
(param: number) => string
- 函式取一個數字引數返回字串() => number
- 沒有引數返回數字的函式。(a: string, b?: boolean) => void
- 函式接受一個字串,也可以選擇一個沒有返回值的布林值。
-
any
- 允許任何型別。涉及any
的表示式未經過型別檢查。 -
void
- 表示無,可用作函式返回值。只有null
和undefined
是void
型別的一部分。 -
never
let foo: never;
-作為型別保護下永遠不變的變數型別。function error(message: string): never { throw new Error(message); }
- 作為永不返回的函式的返回型別。
-
null
- 型別為null
。除非啟用了嚴格的空檢查,否則null
是每個型別的隱式部分。
鑄件
你可以通過尖括號執行顯式轉換,例如:
var derived: MyInterface;
(<ImplementingClass>derived).someSpecificMethod();
此示例顯示了 derived
類,編譯器將其視為 MyInterface
。如果沒有在第二行上進行轉換,編譯器會丟擲異常,因為它不瞭解 someSpecificMethod()
,但是通過 <ImplementingClass>derived
進行轉換會建議編譯器做什麼。
在 Typescript 中投射的另一種方法是使用 as
關鍵字:
var derived: MyInterface;
(derived as ImplementingClass).someSpecificMethod();
從 Typescript 1.6 開始,預設使用 as
關鍵字,因為在 .jsx 檔案中使用 <>
是不明確的。這在 Typescript 官方文件中提到。
類
可以在 TypeScript 程式碼中定義和使用類。要了解有關類的更多資訊,請參閱類文件頁面 。