TypeScript之父:JS不是競爭對手?
轉自:OSC開源社區(qū)

圖片:Microsoft/YouTube
首先,Hejlsberg 提到了在 TypeScript 發(fā)展初期時微軟內部對開源的態(tài)度。眾所周知,微軟的前首席執(zhí)行官史蒂夫·鮑爾默(Steve Ballmer)曾公開的表達過 “Linux 是一種癌癥”言論。他認為,Linux 威脅著微軟的所有知識產權。而 Hejlsberg 則持不同意見,他認為 Linux 并不是 Windows 的威脅,“事實證明,它恰恰相反。”
Hejlsberg 稱,早在 2010 年微軟還在 Ballmer 的帶領下時,他的團隊就認為,開源戰(zhàn)略是贏得 JavaScript 開發(fā)者的唯一途徑。不過當時的他知道,想要在微軟的總部將 TypeScript 作為一個開源項目推行,將會是很困難的一件事。
Hejlsberg 透露,一開始 TypeScript 其實只是一個簡單的想法,一個想看看他們是否可以做得比 JavaScript 更好一點的想法。"我們建立了一些原型,并把它扔在了一起。但當時我們真的很清楚,我們吸引 JavaScript 社區(qū)的唯一方法就是開源。不過在當時的微軟,這無疑是一個很破格的想法" 。
彼時的微軟在 Ballmer 的領導下對開源持有一個"非常矛盾"且"害怕"的態(tài)度,Hejlsberg 的 TypeScript 團隊也不可避免地在微軟內部收到了抵制。"我們有點知道這是我們必須要做的事情,但我們沒有做的經驗。"
好在現如今,隨著 TypeScript 項目日益成熟、微軟開始大力擁抱開源,Hejlsberg 的 TypeScript 團隊也終于不用再像之前一樣如履薄冰了。
為什么要創(chuàng)建 TypeScript
TypeScript 孵化在一個有意思的階段。彼時的谷歌 Chrome 瀏覽器,憑借其對 Web 標準的關注和一個名為 V8 的強大 JavaScript 引擎,已經成為了瀏覽器大戰(zhàn)中的贏家。
Hejlsberg 回憶稱,谷歌打造了一個非常高效的 JavaScript 引擎,JavaScript 的效率也大幅提升。每個人都開始意識到,瀏覽器將成為構建真正應用的地方。他說,當時的開發(fā)人員已經開始為瀏覽器構建龐大的 JavaScript 應用,并努力用 JavaScript 編寫這些應用。
不過 Hejlsberg 認為,這種語言缺乏 modules、classes 等關鍵功能;重要的是,還缺乏在程序中通過規(guī)則創(chuàng)建秩序的 type system。而 TypeScript 的開發(fā)目的就是為了解決這些問題,為 JavaScript 構建更好的工具。此舉的關鍵在于,要在語言中添加一個 type system,而不對 JavaScript 最受用戶喜歡的那一部分內容造成影響。
于是,Hejlsberg 和他的團隊決定建立一個 "erasable type system",這個組件則使得 TypeScript 成為了 JavaScript 的超集。在編譯時,TypeScript 會刪除所有的 types 并將其返回給 JavaScript。
Hejlsberg 解釋說,從某種意義上說,它是一個 type system,只存在于開發(fā)者體驗期間,但在運行時它就消失了。不過在運行時,它能給你帶來的只有好處,沒有任何缺點。
TypeScript 的主要競爭對手是什么?
Hejlsberg 稱,TypeScript 的唯一真正競爭對手是 JavaScript。因為這兩種語言都是運行前端應用程序的必備語言,而 WebAssembly 卻模糊了本機應用程序和瀏覽器應用程序之間的界限。
不過他也表示,JavaScript 并不是真正的競爭對手,“它是我們的孿生兄弟或另一個自我” 。由于 TypeScript 是 JavaScript 的超集,所以用戶也可以將 JavaScript 視為 TypeScript 的子集。這意味著整個 TypeScript 工具鏈非常樂于處理 JavaScript 并在 JavaScript 之上提供所有服務。
Hejlsberg 認為,從某種意義上說,JavaScript 就像沒有類型注解的 TypeScript。所以一種流行的使用 JavaScript 的方式是,人們不會直接在你的源代碼中使用類型注解,而是將類型注解放在注釋中(js.doc 注釋),編譯器則可以從這些注釋中獲得很多信息。
因此,在過去的幾年中,Hejlsberg 和他的團隊則一直在增強對 js.doc 注釋的支持,從而增強了直接使用 JavaScript 的能力。

Creator全平臺游戲開發(fā)教程 PDF 免費下載(800+頁) 大齡個人開發(fā)者,我是如何活下來的,又將怎樣活下去 10+小游戲SDK整合框架,最新支持原生穿山甲! 隔壁老王,帶你入坑騰訊聯機對戰(zhàn)引擎! 更新!Creator最佳文字書寫解決方案!
