javascript
[译] TypeScript:拥有超能力的 JavaScript(下)
- 原文地址:TypeScript?—?JavaScript with superpowers?—?Part II
- 原文作者:Indrek Lasn
- 譯文出自:掘金翻譯計劃
- 本文永久鏈接:github.com/xitu/gold-m…
- 譯者:jonjia
- 校對者:Usey95 anxsec
TypeScript:擁有超能力的 JavaScript(下)
歡迎回來,繼前文 [譯] TypeScript:擁有超能力的 JavaScript (上) 之后,本周帶來下篇。
使用枚舉(enum)可以更清晰地組合一組數據。
下面我們來看看如何構造一個枚舉類型:
你可以通過下面的方法從枚舉中取值:
但這樣返回的是這個值的整數索引,和數組一樣,枚舉類型的索引也是從 0 開始的。
那我們怎么獲取到 "Indrek" 呢?
注意看我們怎么獲取到字符串的值。
還有一個很好的例子是使用枚舉存儲應用的狀態。
如果你想了解更多關于枚舉(enum)的知識,stackoverflow 上的這個回答 探討了更多關于枚舉的細節。
假設我們請求某個 API,獲取了一些數據。我們總是期望成功獲取數據 — 但如果我們無法獲取到數據會怎樣呢?
是時候返回 never 類型了,比如下面這種特殊使用場景:
注意我們傳遞的 message 參數我們可以在另外的方法中調用 error 方法(回調)
因為我們推斷返回值的類型是 never,所以我們聲明返回值的類型為 never,而不是 void。
- null?— 沒有任何值。
- undefined?—?變量被聲明了,但沒有賦值。
它們本身的類型用處不是很大。
默認情況下 null 和 undefined 是所有類型的子類型。就是說你可以把 null 和 undefined 賦值給 number 類型的變量。
圖片來自 stackoverflow
關于 null 和 undefined,Axel Rauschmayer 博士寫過 一篇非常棒的文章。
類型斷言通常會發生在你清楚地知道一個實體具有比它現有類型更確切的類型。
它在運行時沒有影響,只會在編譯階段起作用。TypeScript 會假設你 — 程序員,已經進行了必要的檢查。
下面是一個簡單示例:
尖括號 <> 語法與 JSX 用法沖突,所以我們只能使用 as 語法進行斷言。
關于類型斷言的更多內容
一些更酷的東西
- 接口
- 絕對類型
- 聯合類型
- 類
- 一些很棒的 TypeScript 項目
現在 — 用 TypeScript 來構造些有趣的東西吧!?
感謝閱讀,希望你有所收獲!
你可以關注我的 Twitter。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、后端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。
總結
以上是生活随笔為你收集整理的[译] TypeScript:拥有超能力的 JavaScript(下)的全部內容,希望文章能夠幫你解決所遇到的問題。