「譯」TypeScript終極指南一:安裝與配置

原文來自 The Definitive TypeScript Guide -(https://www.sitepen.com/blog/2018/10/29/update-the-definitive-typescript-guide/

用於大規模應用程序開發的最有趣的語言之一是Microsoft的TypeScript。 TypeScript的獨特之處在於它是JavaScript(ES2015 +)的超集,但是它具有可選類型、接口、泛型等。與其他編譯成為JavaScript的語言不同,TypeScript不會將JavaScript改變為一種新語言。相反,TypeScript團隊格外注意將語言的額外特性儘可能地與JavaScript中可用的功能以及即將推出的功能保持一致。因此,使用TypeScript的開發者不僅能夠使用JavaScript語言中的最新特性,還能使用強大的類型系統來編寫組織性更好的代碼,同時還能使用靜態類型語言提供的高級工具。

TypeScript的真正力量源於其工具。類型是將世界級工具引入JavaScript語言的一種手段,它允許更容易維護的結構化項目。隨著JavaScript項目規模的擴大(項目中的代碼行和開發人員),這一點尤其重要。此外,快速、精確的實現、重構能力和即時反饋使TypeScript成為開發大規模JavaScript應用的理想語言。 TypeScript同樣也很容易開始!由於JavaScript實際上是沒有類型註釋的TypeScript,全部或者部分現存的項目都可以立即被轉化然後隨著時間使用TypeScript補全所有功能。

雖然自本指南首次發佈以來,TypeScript的文檔已經有了顯著的改進,但本指南仍然提供了關於TypeScript關鍵特性的概覽,假設你已經掌握了JavaScript的知識並且基本瞭解了基於類的繼承是如何工作的(如Java,PHP,C#等)。該指南定期更新,以便於提供有關TypeScript最新版本的新信息。

安裝及使用

安裝TypeScript只需運行npm install typescript。 安裝完成後,可以通過命令行運行tsc來啟動TypeScript編譯器或運行本地任務使其在每個文件保存後自動編譯。 如果你想在瀏覽器中試用TypeScript,TypeScript Playground(http://www.typescriptlang.org/play/)這個在線編輯器可讓你體驗TypeScript,除了不能使用模塊。 本指南中的大多數示例都可以直接粘貼到TypeScript Playground中,以便於快速查看TypeScript如何編譯為易於閱讀的JavaScript。

配置

TypeScript編譯器具有高度配置性,允許用戶定義源文件的位置,以及將其轉換的類型檢查器應該要有多嚴格,還有是否允許JavaScript文件等。 每個配置選項都可以傳遞給tsc命令,或者寫進tsconfig.json文件然後存儲在項目中,用來定義編譯器每次運行的方式。 tsconfig.json存儲有關編譯器的各種標誌和設置的信息,以及模塊路徑解析信息。 Dojo項目中的示例tsconfig.json如下:

「譯」TypeScript終極指南一:安裝與配置

在項目中使用tsconfig.json的主要好處是確保編譯器的每次運行配置都和上一次運行時相同,並且項目的所有貢獻者都能使用相同的配置運行。 編譯器還有幾個配置,用於切換編譯器在類型檢查事的嚴格程度和是否允許JavaScript文件。 這是TypeScript的最棒的地方之一,因為它允許將TypeScript添加到現有項目中,而無需將整個項目代碼轉換為TypeScript還有全部都類型化。 諸如noImplicitAny這個配置項,如果為false,將不會針對未使用類型註釋的變量或無法推斷類型的變量發出編譯器警告。 隨著時間的推移,項目可以逐漸開始啟用此配置和其他配置,從而使團隊逐步向到全類型的代碼邁進。 對於使用TypeScript開始的新項目,建議一開始就啟用strict配置以便於從TypeScript得到完全的幫助。

tsconfig中的“lib”屬性可用於指定項目可用的默認庫。這裡的值基於項目類型和需要運行的環境。例如,一個web項目可能需要訪問DOM,因此添加“dom”將確保document的存在幷包含了querySelector等方法。如果在ES2016環境中運行,或者需要相應的polyfill,也可以添加“es2016”。如果你的項目特別期望數組有include方法,則可以添加“es2016.array.include”。 這允許自定義TypeScript如何感知所需的運行環境,以及是否應該為在運行時可能實際並不存在的庫代碼拋出錯誤。

從TypeScript 2.7開始,存在一個新的引用lib指令將特定庫的添加與使用該指令的文件隔離開來。 這有利於將新的或者實驗性的特性隔離到單個文件中,而不是將它們提供到更廣泛的項目中。 請考慮以下示例:

「譯」TypeScript終極指南一:安裝與配置

在此模塊中編譯器不會拋出有關使用Array.prototype.includes的錯誤,因為它包含了lib指令。 但是,如果項目中的另一個文件試圖使用此方法並且tsconfig.json中未定義此lib,則編譯器將拋出錯誤。

許多項目還擁有用於指定linter設置的tslint.json和適用於大多數JavaScript標準包的package.json文件。

TypeScript 2.0添加了Glob支持,這樣就可以利用 *、?和 **/ 來輕鬆地include或exclude來匹配遵循模式的一組文件。

請注意,從TypeScript 2.1開始,tsconfig.json可以從其他配置文件中繼承,從而減少複雜應用程序和庫之間的重複使用。 這是通過extends這個使用路徑作為值的關鍵詞做到的。

未完待續,敬請期待下一篇


分享到:


相關文章: