TypeScript之父:JS不是競爭對手?

轉自:OSC開源社區


TypeScript 4.0  已於上月正式發佈。近日,外媒  ZDnet  則對 TypeScript 之父安德斯·海爾斯伯格(Anders Hejlsberg)進行了一則專門訪談,就 TypeScript 的發展歷程進行了分享。


圖片:Microsoft/YouTube

首先,Hejlsberg 提到了在 TypeScript 發展初期時微軟內部對開源的態度。衆所周知,微軟的前首席執行官史蒂夫·鮑爾默(Steve Ballmer)曾公開的表達過 “Linux 是一種癌症”言論。他認爲,Linux 威脅着微軟的所有知識產權。而 Hejlsberg 則持不同意見,他認爲 Linux 並不是 Windows 的威脅,“事實證明,它恰恰相反。”

Hejlsberg 稱,早在 2010 年微軟還在 Ballmer 的帶領下時,他的團隊就認爲,開源戰略是贏得 JavaScript 開發者的唯一途徑。不過當時的他知道,想要在微軟的總部將 TypeScript 作爲一個開源項目推行,將會是很困難的一件事。

Hejlsberg 透露,一開始 TypeScript 其實只是一個簡單的想法,一個想看看他們是否可以做得比 JavaScript 更好一點的想法。"我們建立了一些原型,並把它扔在了一起。但當時我們真的很清楚,我們吸引 JavaScript 社區的唯一方法就是開源。不過在當時的微軟,這無疑是一個很破格的想法" 。

彼時的微軟在 Ballmer 的領導下對開源持有一個"非常矛盾"且"害怕"的態度,Hejlsberg 的 TypeScript 團隊也不可避免地在微軟內部收到了抵制。"我們有點知道這是我們必須要做的事情,但我們沒有做的經驗。"

好在現如今,隨着 TypeScript 項目日益成熟、微軟開始大力擁抱開源,Hejlsberg 的 TypeScript 團隊也終於不用再像之前一樣如履薄冰了。

爲什麼要創建 TypeScript

TypeScript 孵化在一個有意思的階段。彼時的谷歌 Chrome 瀏覽器,憑藉其對 Web 標準的關注和一個名爲 V8 的強大 JavaScript 引擎,已經成爲了瀏覽器大戰中的贏家。

Hejlsberg 回憶稱,谷歌打造了一個非常高效的 JavaScript 引擎,JavaScript 的效率也大幅提升。每個人都開始意識到,瀏覽器將成爲構建真正應用的地方。他說,當時的開發人員已經開始爲瀏覽器構建龐大的 JavaScript 應用,並努力用 JavaScript 編寫這些應用。

不過 Hejlsberg 認爲,這種語言缺乏 modules、classes 等關鍵功能;重要的是,還缺乏在程序中通過規則創建秩序的 type system。而 TypeScript 的開發目的就是爲了解決這些問題,爲 JavaScript 構建更好的工具。此舉的關鍵在於,要在語言中添加一個 type system,而不對 JavaScript 最受用戶喜歡的那一部分內容造成影響。

於是,Hejlsberg 和他的團隊決定建立一個 "erasable type system",這個組件則使得 TypeScript 成爲了 JavaScript 的超集。在編譯時,TypeScript 會刪除所有的 types 並將其返回給 JavaScript。

Hejlsberg 解釋說,從某種意義上說,它是一個 type system,只存在於開發者體驗期間,但在運行時它就消失了。不過在運行時,它能給你帶來的只有好處,沒有任何缺點。

TypeScript 的主要競爭對手是什麼? 

Hejlsberg 稱,TypeScript 的唯一真正競爭對手是 JavaScript。因爲這兩種語言都是運行前端應用程序的必備語言,而 WebAssembly 卻模糊了本機應用程序和瀏覽器應用程序之間的界限。

不過他也表示,JavaScript 並不是真正的競爭對手,“它是我們的孿生兄弟或另一個自我” 。由於 TypeScript 是 JavaScript 的超集,所以用戶也可以將 JavaScript 視爲 TypeScript 的子集。這意味着整個 TypeScript 工具鏈非常樂於處理 JavaScript 並在 JavaScript 之上提供所有服務。

Hejlsberg 認爲,從某種意義上說,JavaScript 就像沒有類型註解的 TypeScript。所以一種流行的使用 JavaScript 的方式是,人們不會直接在你的源代碼中使用類型註解,而是將類型註解放在註釋中(js.doc 註釋),編譯器則可以從這些註釋中獲得很多信息。

因此,在過去的幾年中,Hejlsberg 和他的團隊則一直在增強對 js.doc 註釋的支持,從而增強了直接使用 JavaScript 的能力。




本文分享自微信公衆號 - Creator星球遊戲開發社區(creator-star)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章