TypeScript之父:JS不是競爭對手
(給前端大學(xué)加星標(biāo),提升前端技能.)
轉(zhuǎn)自:OSC開源社區(qū)

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



