微軟提議為 JavaScript 原生增加類型標注
微軟日前提出了一項新的提案,在提案中希望可以為 JavaScript 帶來可選的類型語法,該提案可能會使 JavaScript 原生自帶 TypeScript 的一些特性,使 TypeScript 語言更快、更容易使用。
具體而言,該提案要求將類型標注(Type Annotations)添加到 JavaScript 代碼中,允許類型標注被外部類型檢查器檢查。在運行時,JavaScript 引擎會忽略這些標注并將這些類型視為注釋。該提案要求 JavaScript 為類型劃出一套語法,JavaScript 引擎將忽略這些語法,但 TypeScript、Flow 等工具可以使用。這項建議將為 ECMAScript 增加可選的類型語法。
該提案的目的是讓開發者能夠運行用 TypeScript、Flow 或其他靜態類型的 JavaScript 超集所編寫的程序,而不需要轉譯。微軟在公告中表示,新的語法將有效地起到注釋作用,而不會改變代碼的運行方式。
微軟在提案中還表示,在過去十年中,靜態類型檢查的案例已經被證明相當成功。對 JavaScript 的大量投資(如微軟 TypeScript、Google Closure Compiler 和 Facebook Flow)為在 JavaScript 中聲明和使用類型提供了方便的語法,并獲得了在其他靜態類型語言中所看到的生產力的提高。它們的語法大多不會影響運行時的語義,實際上將這些變體轉換為普通的 JavaScript 的大部分工作都是在刪除類型。
此外在 2020 和 2021 年的 JS 調查中,靜態類型也一直是 JavaScript 開發者強烈要求的一個功能。
類型語法在 JavaScript 中的興起與下層編譯(或稱轉譯)的興起相吻合。因為類型語法在 JavaScript 中沒有得到原生支持,所以必須有一個工具能夠在運行代碼之前刪除這些類型。對于像 TypeScript 和 Flow 這樣的類型系統來說,將類型清除步驟與語法降級相結合是有意義的,這樣用戶就不需要運行單獨的工具。
這個提案將減少對構建步驟的需求,使一些開發設置變得更加簡單,用戶將可以更加簡單地運行他們編寫的代碼。
微軟在提案中并沒要求將 TypeScript 的類型檢查放在每個瀏覽器和 JavaScript 運行時中,也沒要求在瀏覽器中放置一個新的類型檢查器。微軟認為這將給 JavaScript 和 TypeScript 用戶帶來運行時的性能和兼容性問題,也有可能阻止創新。目前該提案還處于 Stage 0 階段,更多提案內容可查看微軟官方頁面。
本文轉自OSCHINA
本文標題:微軟提議為 JavaScript 原生增加類型標注
本文地址:https://www.oschina.net/news/186336/microsoft-type-annotations-for-javascript