自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Typescript,我永遠不會回到JavaScript了

開發(fā) 后端 新聞
JavaScript可能是現(xiàn)代網(wǎng)絡(luò)的事實上的語言,但長期以來,它也是我選擇腳本編寫的語言。 使用Python進行編碼很有趣,但是如果我有一些自動化的東西,我會去用node。 我選擇的服務(wù)器端語言曾經(jīng)是C#,但如今它雖然功能強大,但感覺卻很笨拙。

JavaScript可能是現(xiàn)代網(wǎng)絡(luò)的事實上的語言,但長期以來,它也是我選擇腳本編寫的語言。 使用Python進行編碼很有趣,但是如果我有一些自動化的東西,我會去用node。 我選擇的服務(wù)器端語言曾經(jīng)是C#,但如今它雖然功能強大,但感覺卻很笨拙。 我曾經(jīng)天真的將Node描述為"泛濫成災(zāi)",它滿足了我編寫的所有內(nèi)容的需求。 我甚至可以用多種不同的方式用JavaScript編寫Android和iOS應(yīng)用程序。

[[315832]]

并不是說它是適用于一切的完美工具,但是多年來我一直為我服務(wù)。 我一直在諷刺地承認在家庭主力馬網(wǎng)上出現(xiàn)的缺陷,包括加里·伯恩哈特(Gary Bernhardt)嘲諷的" Wat?"。 閃電般的談話讓我仍在思考。 如果您以前從未看過它,請立即停止閱讀并繼續(xù)觀看。 您可以稍后感謝我。

閃電般的談話已成為我推薦給前端開發(fā)人員的推薦閱讀清單(查看清單還是消耗清單?)的一部分,還有喬納森·克里默的" 23世紀JavaScript架構(gòu)"。 盡管自ES6問世以來,上一篇文章中的某些內(nèi)容似乎是多余的,但是它對于解釋JavaScript所需的思路還有很長的路要走,這需要從"常規(guī)"編程語言(如果有的話)轉(zhuǎn)變思維方式。 僅那篇文章是我5年前開始自己的JavaScript Odyssey的大部分原因。

那么,為什么我現(xiàn)在揚言要離開,再也不回來了? 答案很簡單。 打字稿。

什么是Typescript?

我假設(shè)您聽說過Typescript,但如果沒有,請嘗試總結(jié)一下:Typescript是強類型的Javascript。 它添加了您期望強類型語言的功能,并且需要一個編譯步驟(從技術(shù)上來說是"翻譯")才能將Typescript轉(zhuǎn)換為JavaScript。 這是因為瀏覽器不了解Typescript。 從技術(shù)上講,Typescript不會添加任何新的運行時功能,而是為開發(fā)人員添加功能。

我聽說有人形容Typescript是喜歡它還是討厭它,但是我還沒有和任何嘗試過并討厭它的人交談。 我已經(jīng)與許多猶豫不決的人進行了交談-大約在2016年中,我就是其中之一。 但是,我聽到的同行對Typescript的最嚴厲批評是,這是一種額外的學習工具。 不僅是語言,而且還有構(gòu)建過程。 但是,大多數(shù)現(xiàn)代的Web應(yīng)用程序在其構(gòu)建鏈中至少有一個鏈接以Babel的形式保留給JavaScript,Babel是一種允許較新的JavaScript在較舊的瀏覽器上運行的工具。 將TypeScript添加到該管道中不應(yīng)該是火箭科學,尤其是因為Babel自v7起就支持Typescript編譯。

它不應(yīng)該是火箭科學,但有時會有這種感覺,這就是Typescript新手有時會掙扎并回到瀏覽器中運行的JavaScript受歡迎的原因之一。

好處

但是正如我所說,我從未聽過有人采用Typescript并為此感到后悔。 好處遠勝于困難,尤其是在使用Angular CLI或Create React App的時代-兩者都使您可以在幾分鐘之內(nèi)開始使用啟用了Typescript的新項目。

我假設(shè)您知道這些好處是什么,但是如果您不知道,請允許我總結(jié)一下:

  • Typescript的編譯步驟意味著您可以及早發(fā)現(xiàn)問題,而不必等待運行時失敗。
  • 您的IDE現(xiàn)在可以在編譯步驟更早的時候提示您。 想象一下,當您引用一個不存在的變量或使用錯誤的參數(shù)調(diào)用函數(shù)時,您的IDE會告訴您! 真正的革命! (當然,因為"真正的"編程語言已經(jīng)享受了多年,所以我一直在調(diào)侃。)編輯:我對此強調(diào)不夠。 我最近將一個舊項目從JavaScript轉(zhuǎn)換為Typescript,以了解我從別人那里繼承來的代碼庫的復(fù)雜性。 這是一個循序漸進的過程,在此期間,團隊繼續(xù)提供新功能,但是我們遇到了一些示例代碼,這些示例中我們錯誤地使用了第三方庫。 也許API發(fā)生了更改,或者有人誤讀了文檔,但是我們傳遞了某些配置變量,這些變量絕對沒有任何作用。 Typescript立即告訴我們,我們刪除了有問題的代碼。 顯然,它是不需要的,并且非常容易誤導。
  • 當ECMAScript(驅(qū)動JavaScript的標準)中提出新功能時,TypeScript可以盡早采用它們,從而使您始終處于最前沿。

但實際上,主要好處是Typescript使您的代碼能夠以JavaScript無法做到的方式進行自我描述。 當我是項目的唯一開發(fā)人員時,JavaScript并不是很糟糕,因為我可以將所有事情都牢記在心,并且我擁有完美的記憶,對嗎? 錯誤。 即使是唯一的開發(fā)人員,我編寫的代碼也容易失憶。 如今,當我編寫普通的JavaScript時,我討厭不得不去閱讀函數(shù)定義以弄清楚如何使用它。 我不知道它返回什么(如果有的話)或它接受什么樣的參數(shù)。 我可能知道參數(shù)的數(shù)量及其名稱,但這并不總是足夠的: 

  1. function doTheThing() {  let error = false;    // About a million lines of code that might cause an error    return error;}function consumeTheThing() {  let error = doTheThing();  if (error) {    // What do I do with the error now?  }} 

這就是我的意思。 "錯誤"是布爾值嗎? 當我看到第2行時,它看起來肯定是這樣,但是那到" doTheThing"末尾之間的一百萬行代碼又如何呢? 它可以是字符串,對象或知道什么的人。

您可能會說這種靈活性是一種資產(chǎn)。 可能是這樣,但更常見的是它是一個陷阱,誘使您采用簡單的方式,這會在您和您的同伴之間引起許多微小的挫敗感。 曾經(jīng)在別人的代碼中間,覺得自己在迷宮中嗎? 那就是別人的代碼。 您可以用JavaScript編寫"好的"代碼,但是很少有人鼓勵您這樣做。

這就是TypeScript的美。 這并不會迫使您成為一名優(yōu)秀的開發(fā)人員。 但這為您提供了實現(xiàn)此目標的工具。

缺點

有缺點嗎? 當然有。

  • 從字義上來說,更多的打字。 您可以更快地穿破鍵盤(對于使用蝶形鍵盤的人來說,這可能是個問題)。 沒什么大不了的,但是一些JavaScript開發(fā)人員討厭必須用每個新函數(shù)或變量寫出類型。 您不必這樣做,但是如果您不使用類型,為什么要使用Typescript?
  • 由于您必須編譯代碼,因此每次更新和每次測試運行都將花費一點時間。 但是,我們正在談?wù)搸酌腌姟? 我使用Typescript節(jié)省的時間遠遠超過了編譯它所花費的時間
  • 有時,構(gòu)建項目的復(fù)雜性可能是一個真正的痛苦。 這是真實的-如果您不熟悉構(gòu)建工具,則設(shè)置新項目可能會令人沮喪。 在短期內(nèi),我的建議是找到一個入門項目以助您一臂之力—如果您正考慮使用那些框架,那么上述Angular CLI和Create React App在這方面非常有用。 長期? 花時間學習工具-tsc,Babel,WebPack和所有這些好東西。 如果您使用的是節(jié)點,請嘗試ts-node。 如果您使用的是Mocha,請嘗試ts-mocha。 有一些簡單的捷徑可以幫助您入門。

有點像是我的觀點是單方面的-我并沒有在缺點和優(yōu)點上投入太多精力 我想,出于同樣的原因,我不會花很多時間在每頓飯上都吃麥當勞的好處-這樣做的好處有限(不必再做飯了……我想就是這樣)。

未來

我認為Typescript不會在短期內(nèi)取代JavaScript-了解后者對于使前者發(fā)揮作用至關(guān)重要。 而且我們不會看到Typescript在任何瀏覽器中本機運行。 它是一個預(yù)處理器,就像之前的CoffeeScript一樣。 Typescript和Coffescript之間的區(qū)別在于后者是對其所基于語言的根本改變。 Typescript是自然的演變。 這不僅使學習變得更容易,而且使將JavaScript項目轉(zhuǎn)換為Typescript的過程更加繁瑣。 首先將* .js重命名為* .ts。 現(xiàn)在,您有了Typescript項目! 然后,您可以一次開始采用語言功能。 我不能保證這會很容易,但是它將告訴您有關(guān)JavaScript從未有過的事情。 當您開始下一個項目時,Typescript編譯器將等待

這就是為什么我永不回頭。

 

責任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2023-08-25 13:34:02

JavascriptWikipediaSlack

2019-07-23 09:34:27

Oracle程序員數(shù)據(jù)庫

2009-04-17 15:24:20

人生撤銷耍賴

2022-03-27 22:07:35

元宇宙虛擬人IBM

2020-06-01 08:35:36

編程語言JavaPython

2021-10-06 16:21:32

類型對象Typescript

2021-06-17 11:21:16

云計算數(shù)據(jù)中心網(wǎng)絡(luò)

2021-10-26 06:34:12

系統(tǒng)設(shè)計服務(wù)

2025-02-18 15:17:59

2020-04-08 17:53:40

TypeScriptJavaScript代碼

2010-01-12 18:27:58

C++代碼

2021-04-04 23:15:23

數(shù)字貨幣加密貨幣

2020-02-20 10:50:30

多數(shù)人不會真正成功

2018-01-10 15:03:27

前端TypeScriptJavaScript

2012-10-08 09:15:57

JavaScriptJSTypeScript

2019-08-30 08:54:05

TypeScriptJavaScript語言

2022-02-28 21:15:42

火狐火狐瀏覽器瀏覽器

2016-04-28 09:36:44

人才教育/華三

2014-12-11 10:01:09

程序員

2013-06-20 11:11:00

程序員經(jīng)理
點贊
收藏

51CTO技術(shù)棧公眾號