中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

與領(lǐng)導(dǎo)團隊的工程師討論TypeScript

發(fā)布于:2020-12-24 16:12:36

0

85

0

TypeScript 前端 JavaScript

在2020年開發(fā)者調(diào)查結(jié)果中,最受關(guān)注的統(tǒng)計數(shù)據(jù)之一是最受歡迎的語言。正如幾年來一樣,Rust是第一名。但是排在第二位的是TypeScript,這是JavaScript的一種強類型超集,略微勝過Python。我們想了解TypeScript為何如此受歡迎,因此我們聯(lián)系了Microsoft TypeScript語言的主要工程負(fù)責(zé)人Ryan Cavanaugh。他足夠慷慨地坐下來回答我們的問題。事不宜遲,以下是我們的對話,為清晰起見,我們對其進行了輕松編輯。

問:您在TypeScript團隊工作了多久了?

答:我是在2012年2月首次發(fā)布TypeScript團隊大約六個月之前就加入這個團隊的。所以,我已經(jīng)從事了大約八年的時間。

問:有趣,所以很接近開始。您還記得為什么團隊想出TypeScript,為什么要發(fā)布類似的東西嗎?

答:當(dāng)我加入團隊時,Microsoft的很多人都想以我們所謂的“應(yīng)用程序規(guī)?!遍_發(fā)JavaScript。 TFS和Office等團隊希望構(gòu)建大型JavaScript應(yīng)用程序。這些人中的許多人都熟悉靜態(tài)類型的語言,例如C ++,C#,Java等。他們希望使靜態(tài)類型可用于概念可伸縮性和工具。

微軟的語言專家研究了這種情況,并說,很好,我們可以嘗試像人們以前一樣編寫一種新的語言。有像Script#這樣的項目,它使用C Sharp并將其轉(zhuǎn)換為JavaScript,或者像CoffeeScript這樣的語言,如果JavaScript具有不同的語法該怎么辦?但是他們決定只是采用JavaScript并在其上添加靜態(tài)類型。

當(dāng)時,JavaScript經(jīng)歷了增長的復(fù)興,在相當(dāng)長的時間內(nèi),他們第一次在語言中再次添加了功能。人們想使用這些很酷的新功能,例如箭頭功能和類,并且他們不想等待所有瀏覽器都采用它們。他們希望能夠立即使用這些功能。我認(rèn)為這是TypeScript預(yù)先提供的三件事:用于查找錯誤的靜態(tài)類型,利用該靜態(tài)類型信息進行工具開發(fā)以及提供今天明天的JavaScript功能。

問:您是否發(fā)現(xiàn)收養(yǎng)點沒有回報?人們會遇到什么東西嗎,哦,是的,我們現(xiàn)在正在使用TypeScript?

答:哦,絕對是Google宣布他們將在Angular中使用TypeScript?,F(xiàn)在有點浪費時間了。但是,如果您查看TypeScript的圖形,則實際上任何圖形(GitHub星圖,下載,拉取請求)都可以看到Angular公告發(fā)布的確切時間。圖就改變了。它永遠不會回頭。您再也看不到曲線上的小彎,因為曲線一直在前進。那是一個真正的拐點。而且我認(rèn)為有趣的是,當(dāng)時人們認(rèn)為TypeScript只是Angular人們使用的東西,而沒有太多其他用途。事實并非如此。顯然,我們在Angular開發(fā)人員中仍然很受歡迎。但這對我們來說是一個真正的動力建設(shè)者。

問:在我們最近的開發(fā)者調(diào)查中,TypeScript是排名第二高的最受歡迎的語言。您為什么認(rèn)為人們?nèi)绱讼矚g它?

嗯?因為太好了!

問:我認(rèn)為我們需要一個可以客觀辯護的答案。

答:從根本上講,JavaScript作為一種語言而受到了不好的說唱,但是使用它確實很有趣。它有時使您變得更有活力,有時使您變得更有目的地。這只是一種很棒的功能語言。但是缺少靜態(tài)類型檢查確實會限制人們編寫可以確信在運行之前可以正常工作的東西的能力。

TypeScript支持JavaScript的最后一個粗略優(yōu)勢,并為您提供了真正有趣的操作并且可以在任何地方運行。我認(rèn)為,如果TypeScript是基于一種不太通用的語言或一種不太有趣的語言構(gòu)建的語言,那么我認(rèn)為它不會那么成功。確實取得了很大的進步,并使它變得更好。

問:似乎靜態(tài)鍵入現(xiàn)在有點片刻。我已經(jīng)看到了很多關(guān)于贊賞Rust中的鴨子輸入和Python中的提示的評論。您為什么認(rèn)為靜態(tài)輸入現(xiàn)在如此流行?

答:我認(rèn)為是因為人們試圖在沒有大型應(yīng)用程序的情況下構(gòu)建大型應(yīng)用程序,并看到它有多痛苦。我的意思是,F(xiàn)acebook上的Hack也在發(fā)生同樣的事情,他們在PHP中添加類型。因此,我認(rèn)為人們已經(jīng)意識到,您可以很容易地編寫一個沒有靜態(tài)類型的小程序,但是您很快就會遇到一個門檻,如果沒有它,事情就會變得太痛苦了。當(dāng)您嘗試維護它們并猜測鍵入內(nèi)容時,很難推理。

我認(rèn)為我最喜歡的事情是互聯(lián)網(wǎng)上的人們在說:‘我在TypeScript中進行了巨大的重構(gòu),重構(gòu)了三個小時。然后我運行我的代碼,它第一次起作用了?!褂脛討B(tài)語言,這將永遠不會發(fā)生。當(dāng)類型檢查器說您完成時,有一個非常令人滿意的元素要完成。那可能只有百分之八十五的準(zhǔn)確率。但這比零好得多。這是一種更好的開發(fā)方式,尤其是在這樣的大型重構(gòu)過程中。

問:我見過一些反對靜態(tài)打字的人。您是否認(rèn)為可以進行動態(tài)鍵入?

答:我是這樣認(rèn)為的。我的意思是,那里的編程世界很大。我不認(rèn)為您不喜歡靜態(tài)類型是不對的。我認(rèn)為這是個人喜好。當(dāng)然,有些程序會妨礙您進行靜態(tài)類型輸入。這對我們來說很重要;我們還提供了JavaScript工具,但我們?nèi)匀徽J(rèn)為JavaScript是一種完全有效的開發(fā)方式。我只想對人們說,如果靜態(tài)類型不適合您,那么對于您的編程風(fēng)格或您正在處理的問題,只需跳過它即可。沒關(guān)系。沒關(guān)系。我不會生氣。如果有人可以得到三萬行的應(yīng)用程序而無需使用靜態(tài)類型就可以完成工作,那么我會印象深刻。這似乎真的很困難。但是對那些使它起作用的人表示敬意。

Python也是如此。很少有人能使用Python類型注釋,但是Python非常受歡迎。我認(rèn)為數(shù)據(jù)是不言而喻的—我認(rèn)為Python在調(diào)查中排名第三(編者注:是,但僅次于頭發(fā))。我向您保證,這些Python開發(fā)人員中只有很小一部分具有靜態(tài)類型。無論您的問題領(lǐng)域是什么,這都可能是最適合您的。

問:我知道我們即將迎來Java 25周年。 JavaScript也已經(jīng)存在了一段時間?,F(xiàn)在,是TypeScript。從過去的離線工作到網(wǎng)絡(luò)工作再到移動工作,過去十年來我們看到的趨勢是什么,這些趨勢使JavaScript和現(xiàn)在的TypeScript成為理想的工具?

這是您是否要調(diào)試或加載引用.js文件的生產(chǎn)HTML的問題。在此過程中,我們實際上在哪里獲取.ts文件?永不說永不。但是對我來說,這是一種不久的將來。 Deno完全是自己的事情,因為它有一個新的運行時。因此,這種情況對我來說更有意義,至少是在您第一次運行腳本時進行類型檢查,并確保您具有一些兼容的環(huán)境。

問:Microsoft團隊現(xiàn)在的狀態(tài)是什么?自您加入以來,它增長了多少?它有多大?

答:在我們一直致力于這一工作的整個過程中,我們有四到八名核心編譯器工程師,一到兩個PM,以及四到零的專用測試人員。這一直很穩(wěn)定。最近,我們有意識地擴大了團隊。

過去,我們有一個核心的編譯器團隊,然后有另一個團隊在Visual Studio方面工作,因為集成到像Visual Studio這樣的大型產(chǎn)品中確實需要大量工作。但是VS方面的一些體系結(jié)構(gòu)改進釋放了那里的一些工程師力量。因此,我們正在召集該團隊來幫助我們進行重構(gòu)和“轉(zhuǎn)到定義”之類的工作??傮w上團隊規(guī)模相同,除了現(xiàn)在我們將有更多的人在GitHub回購中看到的核心編譯器服務(wù)上工作。

問:您能否給我一些關(guān)于Microsoft之外的觀點,您在哪里看到有人幫助您以不同的方式構(gòu)建它?我們討論了Deno及其對TypeScript的作用。您在哪里看到其他人在幫助建立這個生態(tài)系統(tǒng)?

我們完全依賴生態(tài)系統(tǒng)來制造在集成環(huán)境中工作的產(chǎn)品。因此,無論是webpack還是ts-loader之類的插件,還是我們?nèi)绾问褂脜R總或Parcel,還是…為捆綁程序命名,對不對?這一切都非常復(fù)雜。

我們的人員配備不足以讓我們完全擁有這種經(jīng)驗。而且我們不想。社區(qū)應(yīng)該推動將TypeScript納入更大的構(gòu)建過程以及整個更大的生態(tài)系統(tǒng)的方式。隨著JavaScript構(gòu)建管道的擴展和變得越來越復(fù)雜,我們看到人們在加緊并提供該功能。這可能是TypeScript和`create-react-app`,或者是TypeScript如何與Vue集成。我們只想確保自己正在構(gòu)建僅知道如何構(gòu)建的東西,然后幫助其他人獲得只有他們知道如何構(gòu)建的東西。幾個里程碑之前,我們專門與ts-loader人員合作,以期獲得良好的項目參考實現(xiàn)。

JavaScript生態(tài)系統(tǒng)中的事物數(shù)量在不斷增長。我們只是希望擴大社區(qū)以在所有這些情況下支持TypeScript,而不是擴大團隊。我們還一直在研究如何更聰明地將外部貢獻納入TypeScript。我們看到的主要挑戰(zhàn)是,向TypeScript代碼庫添加功能實際上很容易,而修復(fù)錯誤則非常困難。人們添加功能比修復(fù)bug更加興奮,因為它很有趣。誰能責(zé)怪他們?弄清楚我們能做些什么,并鼓勵人們在我們需要更多幫助的事情上幫助我們,這將是社區(qū)的挑戰(zhàn)。我不會出去說我需要免費工作。人們可以使用這里提供的任何東西來開源。那很棒。但這是我愿意做得更多的事情。