TS 基礎知識(二)

文檔地址

高級類型

? ? 1 交叉類型

? ??????交叉類型是將?多個類型合并為一個類型, 也就是 幾種類型之和;

? ? ? ? 它把現(xiàn)有的多種類型疊加到一起成為一種類型,它包含了所需的所有類型的特性

交叉類型

? ? 2 聯(lián)合類型

? ??????聯(lián)合類型表示一個值可以是?幾種類型之一,用豎線(?| )分隔每個類型;

聯(lián)合類型
聯(lián)合類型

? ??????如果一個值是聯(lián)合類型,我們?只能?訪問此聯(lián)合類型的所有類型里?共有的成員。

只能?訪問?共有的成員

? ? 3 類型保護

? ? ? ?類型保護就是一些表達式,它們會在運行時檢查以確保在某個作用域里的類型。

? ??????類型謂詞

???類型謂詞

? ???????pet is Fish 就是類型謂詞。 謂詞為?parameterName is Type 這種形式,?parameterName 必須是來自于當前函數(shù)簽名里的一個參數(shù)名。

? ??????typeof 類型保護

? ??????????????這些*?typeof 類型保護*只有兩種形式能被識別:?typeof v === "typename"和?typeof v !== "typename",?"typename" 必須是?"number",?"string",?"boolean" 或?"symbol"。 但是TypeScript并不會阻止你與其它字符串比較,語言不會把那些表達式識別為類型保護。

? ??????instanceof 類型保護

instanceof 類型保護

可以為null的類型

? ??類型檢查器認為?null 與?undefined 可以賦值給任何類型;???

????null 和 undefined 是?所有類型的子類型。 就是說可以把?null 和 undefined 賦值給 任何類型的變量。

? ??由于可以為 null 的類型是通過聯(lián)合類型實現(xiàn),那么你需要使用類型保護來去除?null;

類型保護

? ??如果編譯器不能夠去除?null 或?undefined,可以使用類型斷言手動去除。 語法是添加?!后綴:?identifier! 從?identifier 的類型里去除了?null和?undefined, 可以手動保證它不是 null 或者??undefined

類型斷言

字符串字面量類型

? ??????字符串字面量類型允許你指定字符串必須的?固定值。?在實際應用中,字符串字面量類型可以與聯(lián)合類型類型保護類型別名 很好的配合。 通過結合使用這些特性,你可以實現(xiàn)?類似枚舉類型的字符串。

字符串字面量類型

索引類型

? ??索引類型查詢操作符 keyof

索引類型查詢操作符

? ???索引訪問操作符

? ??????????getProperty 里的?o: T 和?name: K,意味著?o[name]: T[K]。 當你返回?T[K] 的結果,編譯器會實例化鍵的真實類型,因此?getProperty 的返回值類型會隨著你需要的屬性改變;

? ??????????? person['name']具有類型?Person['name']?— 例子里則為?string 類型

?索引訪問操作符

? ??索引類型 和 字符串索引簽名

? ??????keyof 和?T[K] 與字符串索引簽名進行交互。 如果你有一個帶有字符串索引簽名的類型,那么?keyof T會是?string。 并且?T[string] 為索引簽名的類型:

?索引類型和字符串索引簽名
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • #前端基礎 # ## JavaScript基礎 ## ###渲染機制與變量 ### script代碼為什么放到bo...
    hmg閱讀 350評論 1 1
  • js的命名規(guī)范 1、.JS中嚴格區(qū)分大小寫 2、命名的時候可以使用$、_、數(shù)字、字母,但是數(shù)字不能作為名字的第一位...
    筱貳_梁閱讀 355評論 0 1
  • 第四章 變量、作用域和內存問題 基本類型和引用類型的值 ECMAScript 變量可能包含兩種不同數(shù)據(jù)類型的值:基...
    北風吹_yfy閱讀 386評論 0 1
  • 注:本文所有知識點總結或摘抄自廖雪峰javascript教程,點擊查看更詳細的講解。 1.javascript簡介...
    hanyuntao閱讀 575評論 0 13
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 8,164評論 0 4

友情鏈接更多精彩內容