Electron 宣布支援 TypeScript
現在 `electron` npm 套件包含 TypeScript 定義檔案,提供整個 Electron API 的詳細註釋。這些註釋可以改善您的 Electron 開發體驗,**即使您撰寫的是原生 JavaScript**。只要 `npm install electron` 即可在您的專案中取得最新的 Electron 類型定義。
TypeScript 是由 Microsoft 建立的開源程式設計語言。它是 JavaScript 的超集合,透過新增靜態類型支援來擴充該語言。近年來,TypeScript 社群快速成長,並且在最近的 Stack Overflow 開發人員調查中,TypeScript 被評為最受歡迎的程式設計語言之一。TypeScript 被描述為「可擴展的 JavaScript」,而且 GitHub、Slack 和 Microsoft 的團隊都使用它來撰寫可擴展的 Electron 應用程式,這些應用程式供數百萬人使用。
TypeScript 支援許多 JavaScript 的較新語言功能,例如類別、物件解構和 async/await,但其真正的區別功能是**類型註釋**。宣告程式預期的輸入和輸出資料類型,可以透過協助您在編譯時尋找錯誤來減少錯誤,而且這些註釋也可以作為 程式運作方式的正式宣告。
當程式庫以原生 Javascript 撰寫時,類型通常會在撰寫文件時事後含糊地定義。函式通常可以接受比文件中記載的更多類型,或者函式可能具有未記載的隱藏限制,這可能會導致執行階段錯誤。
TypeScript 使用**定義檔案**來解決這個問題。TypeScript 定義檔案會描述程式庫的所有函式,以及其預期的輸入和輸出類型。當程式庫作者將 TypeScript 定義檔案與其發佈的程式庫捆綁在一起時,該程式庫的使用者可以直接在其編輯器內探索其 API 並立即開始使用,通常不需要查閱程式庫的文件。
許多熱門專案(例如 Angular、Vue.js、node-github(現在還有 Electron!))會編譯自己的定義檔案並將其與發佈的 npm 套件捆綁在一起。對於沒有捆綁自己定義檔案的專案,還有一個社群維護的第三方定義檔案生態系統 DefinitelyTyped。
安裝
從 1.6.10 版開始,每個 Electron 版本都包含自己的 TypeScript 定義檔案。當您從 npm 安裝 `electron` 套件時,`electron.d.ts` 檔案會自動與安裝的套件捆綁在一起。
安裝 Electron 的最安全方法是使用確切的版本號碼
npm install electron --save-dev --save-exact
或者,如果您使用的是 yarn
yarn add electron --dev --exact
如果您已經在使用 ` @types/electron` 和 ` @types/node` 等第三方定義,您應該從 Electron 專案中移除它們,以防止任何衝突。
定義檔案是從我們的結構化 API 文件衍生而來,因此它將始終與Electron 的 API 文件一致。只要安裝 `electron`,您就會始終獲得與您使用的 Electron 版本同步的最新 TypeScript 定義。
用法
如需摘要說明如何安裝和使用 Electron 的新 TypeScript 註釋,請觀看此簡短的示範螢幕錄影
如果您使用的是 Visual Studio Code,您已經內建了 TypeScript 支援。還有針對 Atom、Sublime、vim 和其他編輯器的社群維護外掛程式。
一旦您的編輯器設定為 TypeScript,您將會開始看到更多與內容相關的行為,例如自動完成建議、內嵌方法參考、引數檢查等等。
開始使用 TypeScript
如果您是 TypeScript 的新手並想了解更多資訊,這段來自 Microsoft 的介紹影片提供了關於該語言創建原因、運作方式、使用方法以及未來發展方向的簡要概述。
因為 TypeScript 是 JavaScript 的超集,您現有的 JavaScript 程式碼已經是有效的 TypeScript。這意味著您可以逐步將現有的 JavaScript 專案轉換為 TypeScript,並根據需要加入新的語言功能。
感謝
若沒有 Electron 開源維護者社群的幫助,這個專案不可能完成。感謝 Samuel Attard、Felix Rieseberg、Birunthan Mohanathas、Milan Burda、Brendan Forster 以及許多其他人的錯誤修復、文件改進和技術指導。
支援
如果您在使用 Electron 新的 TypeScript 定義檔案時遇到任何問題,請在 electron-typescript-definitions 儲存庫上提交 issue。
祝您 TypeScript 編碼愉快!