本文探討一系列在Angular項目及其他TypeScript項目中都適用的技巧和竅門。
近年來,JavaScript中靜態類型的需求迅速增長。大型前端項目、更複雜的服務器和復雜的命令行工具都促進了JavaScript世界中對更具防禦性編程的需求。此外,在實際運行之前編譯應用程序的負擔並未被視為弱點,而是一個機會。雖然出現了兩個強大的競爭者(TypeScript和Flow),但許多趨勢實際上表明只有一個可能會勝出——TypeScript。
除了營銷宣傳和眾所周知的特性外,TypeScript擁有一個擁有非常活躍貢獻者的驚人社區。它還在語言設計方面擁有業內頂尖的團隊之一。在Anders Hejlsberg的領導下,該團隊成功地將大型JavaScript項目的格局完全轉變為幾乎完全由TypeScript驅動的業務。憑藉VSTS或Visual Studio Code等非常成功的項目,微軟本身就是這項技術的堅定支持者。
但吸引人的不僅僅是TypeScript的特性,還有TypeScript支持的可能性和框架。谷歌決定完全採用TypeScript作為Angular 2 的首選語言,已被證明是一個雙贏的局面。 TypeScript不僅獲得了更多關注,Angular本身也受益匪淺。使用靜態類型,編譯器已經可以給我們提供信息豐富的警告和關於代碼為何無法運行的有用解釋。
關鍵要點
module.d.ts
文件中創建自己的定義,以增強開發精度,並可能通過共享這些定義來為社區做出貢獻。 const enum
進行性能優化,因為它不會生成運行時代碼,而普通的枚舉會生成運行時代碼,這使得它們可以根據項目需求適用於不同的場景。 any
以提高特異性:將any
類型的使用保留給真正通用的數據,並努力定義更具體的類型,這有助於維護類型安全並減少運行時錯誤。 TypeScript技巧1:提供您自己的模塊定義
TypeScript是JavaScript的超集。因此,可以利用每個現有的npm包。雖然TypeScript生態系統龐大,但並非所有庫都附帶適當的類型定義。更糟糕的是,對於某些(較小的)包,甚至不存在單獨的聲明(以@types/{package}的形式)。此時,我們有兩個選擇:
後者絕對是首選。我們無論如何都必須查看模塊的文檔,但將其鍵入出來將防止開發過程中出現簡單的錯誤。此外,如果我們對剛剛創建的類型定義非常滿意,我們總是可以將其提交給@types以將其包含在npm中。因此,這也讓我們獲得了社區的尊重和感激。不錯!
提供我們自己的模塊定義最簡單的方法是什麼?只需在源目錄中創建一個module.d.ts(也可以命名為與包相同的名稱——例如,對於npm包unknown-module,可以命名為unknown-module.d.ts)。
讓我們為這個模塊提供一個示例定義:
<code class="language-typescript">declare module 'unknown-module' { const unknownModule: any; export = unknownModule; }</code>
顯然,這只是第一步,因為我們根本不應該使用any。 (有很多原因可以解釋這一點。TypeScript技巧5展示瞭如何避免它。)但是,它足以讓TypeScript了解模塊並防止編譯錯誤,例如“unknown module ‘unknown-module’”。這裡的export表示法適用於經典的module.exports = ...類型的包。
以下是此類模塊在TypeScript中的潛在使用:
<code class="language-typescript">declare module 'unknown-module' { const unknownModule: any; export = unknownModule; }</code>
如前所述,整個模塊定義現在位於導出的常量的類型聲明中。如果導出的內容是一個函數,則聲明可能如下所示:
<code class="language-typescript">import * as unknownModule from 'unknown-module';</code>
當然,也可以使用使用ES6模塊語法導出功能的包:
<code class="language-typescript">declare module 'unknown-module' { interface UnknownModuleFunction { (): void; } const unknownModule: UnknownModuleFunction; export = unknownModule; }</code>
(以下內容與原文相同,篇幅較長,為避免重複,此處省略TypeScript技巧2-10以及後續內容。) 請根據需要自行參考原文。 如果需要我繼續生成剩餘內容,請告知。
以上是10個基本的打字條技巧和竅門的詳細內容。更多資訊請關注PHP中文網其他相關文章!