1. 程式人生 > 實用技巧 >typescript學習筆記(1)

typescript學習筆記(1)

1.簡介、安裝方式自行百度

2.基礎型別

  • 布林值 boolean
  • 數字 number
  • 字串 string
  • 陣列 type[],例如第一種方式number[],表示由數字組成的陣列,第二種方式 Array<type> ,例如 Array<number>
  • 元組 Tuple 。例如 [string,number].即用基礎型別定義元素形成的陣列
  • 列舉 enum。使用列舉型別可以為一組數值賦予友好的名字,例如
    enum Color { Red, Green, Blue};
    let c:Color = Color.Green;
  • 任意值 any
  • 空值 void,表示沒有任何型別,當函式沒有返回值的時候,通常其返回值型別為void。宣告一個void型別的變數只能賦值undefined和null
  • Null和undefined各自為各自型別的唯一子型別,並且是其他所有型別的子型別。但是在 --strictNullChecks 模式時就只能賦值給void和自身
  • 永不存在型別 never,never是任何型別的子型別,也可以賦值給任何型別,然而沒有型別是never的子型別或者賦值給never型別(除開自身) ,即時是any也不行
    // 返回never的函式必須存在無法達到的終點
    function error(message: string): never {
        throw new Error(message);
    }
    
    // 推斷的返回值型別為never
    function fail() {
        
    return error("Something failed"); } // 返回never的函式必須存在無法達到的終點 function infiniteLoop(): never { while (true) { } }

3.型別斷言

有時候你會遇到這樣的情況,你會比TypeScript更瞭解某個值的詳細資訊。 通常這會發生在你清楚地知道一個實體具有比它現有型別更確切的型別。

通過型別斷言這種方式可以告訴編譯器,“相信我,我知道自己在幹什麼”。 型別斷言好比其它語言裡的型別轉換,但是不進行特殊的資料檢查和解構。 它沒有執行時的影響,只是在編譯階段起作用。 TypeScript會假設你,程式設計師,已經進行了必須的檢查。

型別斷言有兩種形式。 其一是“尖括號”語法:

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

另一個為as語法:

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

兩種形式是等價的。 至於使用哪個大多數情況下是憑個人喜好;然而,當你在TypeScript裡使用JSX時,只有as語法斷言是被允許的。