基本語法

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 - 表示,可用作函式返回值。只有 nullundefinedvoid 型別的一部分。

  • 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 程式碼中定義和使用類。要了解有關類的更多資訊,請參閱類文件頁面