TypeScript 讓你不會想用回 JavaScript

古語說的好,長江後浪推前浪。作為一名程序員,我一直很偏愛JavaScript,不為什麼,就是因為強大。但是,TypeScript的出現,與之形成對比,讓我不得不開始考慮TypeScript,下面我就為大家解析一下我為什麼要開始用TypeScript。

TypeScript 让你不会想用回 JavaScript

作者 | Jamie Morris

出品 | CSDN(ID:CSDNnews)

以下為譯文

TypeScript 让你不会想用回 JavaScript

JavaScript可能是一種事實上的現代Web開發語言,它也是我一直是我選擇用來編寫腳本的語言。用Python編寫代碼很有趣,但是如果我有一些東西要自動化,我會使用Node。

在過去,我選擇的服務器端語言是C#,但現在我感覺它很笨拙,儘管它很強大。我曾經天真地認為Node是服務器端語言的“神來之筆”,它滿足了我編寫代碼的一切需求。我甚至可以有很多種不同的方式使用JavaScript來編寫安卓(Android)和iOS應用程序。

我並不是說JavaScript對於編寫任何程序來說,是一個完美的工具,但是多年來它確實對我非常有用。

我一直堅定地承認JavaScript在Web前臺的繁重的開發工作上的一些缺陷,這包括了Gary Bernhardt在他的戲謔性的 “Wat?” 閃電演講中令人一想起來就會發笑的例子。如果你從來沒有看過這個視頻,現在就停下你的閱讀,趕緊去找這個視頻看看。看完後你會感謝我的。

Gary Bernhardt的這個閃電演講現在已經成為我的推薦閱讀列表的一部分,和Jonathan Creamer所寫的“面向23世紀的JavaScript體系結構”這篇文章一起呈現給未來的前端開發人員。

雖然自從ES6出現以後,這篇文章中的一些內容看起來是多餘的,但是它對於解釋JavaScript需要從“普通編程語言”轉變思維的事情(如果有這樣的事情的話)有很大的幫助。這篇文章本身是我5年前開始自己的JavaScript之旅的一個重要原因。

但是為什麼我現在威脅說要再也不用回JavaScript呢?答案很簡單,因為TypeScript。

TypeScript 让你不会想用回 JavaScript

TypeScript是什麼?

我猜你們已經聽說過TypeScript,如果沒有的話,讓我試著總結一下:TypeScript是強類型的JavaScript語言。

它添加了你們對強類型語言所期望的一些特性,並且需要一個編譯步驟(技術上這個步驟叫“Transpilation”)來將TypeScript轉換為JavaScript的代碼。這是因為瀏覽器不理解TypeScript。

從技術上講,TypeScript不添加任何新的運行時特性,它只是為開發人員添加一些特性。

我聽說有人把TypeScript說成是一種“不是愛它就是恨它”的開發語言,但是我還沒有見過一個用過TypeScript的人說恨它。但是我和很多不想嘗試它的人交流過。那是大約2016年中的事,其實我也是其中之一。

我聽到的同行們對TypeScript的最壞批評是,它是一套需要額外學習的工具。不僅包括語言本身,還包括了構建過程。然而,大多數現代Web應用程序在其構建鏈中至少有一個鏈接以Babel的形式保留給JavaScript,而Babel是一個允許較新JavaScript在較舊的瀏覽器上運行的工具。

將TypeScript添加到這個鏈中不應該是件高難度的事,特別是因為Babel從v7版本開始就支持TypeScript編譯。

儘管TypeScript不應該是一種高深的科學,但有時它會讓人產生這種感覺。這就是為什麼剛開始使用TypeScript的人有時會掙扎著回到JavaScript上的原因之一,因為JavaScript就在瀏覽器中運行。

TypeScript 让你不会想用回 JavaScript

TypeScript帶來的好處

正如我上面所說,我從未聽過有人使用TypeScript,這是件很遺憾的事。TypeScript帶來的好處遠遠大於它的困難,特別是在Angular CLI(Angular命令行接口)或Create- React-App(注:是一個官方支持的創建React單頁應用程序的方法)大行其道的那個時代,這兩個工具都允許你在幾分鐘內開始一個新的支持TypeScript的項目。

我想你已經知道這些好處是什麼,但如果你不知道的話,請允許我總結一下:

TypeScript的編譯步驟可以讓你及早發現問題,而不是等待運行時失敗。

你的IDE現在甚至可以在編譯步驟之前提示你一些錯誤。想象一下,如果你的IDE能夠告訴你正在引用一個不存在的變量,或者正在使用錯誤的參數來調用一個函數,那真是革命性的進步!(當然,這裡我是開玩笑的,因為“真正的”編程語言很多年前就有了這些功能)

當ECMAScript(驅動JavaScript語言的標準)中提出新的特性時,TypeScript能夠很早地採用它們,讓你一直保持在技術最前沿。

但實際上,TypeScript的主要好處是,它可以讓你的代碼以JavaScript無法描述的方式進行自我描述。

你可能認為,當你是一個項目的唯一開發人員時,JavaScript並沒有那麼糟糕,因為所有的東西都在你的腦子裡,而且你有完美的記憶力,是這樣嗎?不,你錯了。即使作為一個項目的唯一開發人員,我在編寫代碼時也容易出現一陣陣健忘症。

現在,當我編寫普通的JavaScript時,我討厭閱讀一個函數的定義來搞清楚如何使用它。我不知道它會返回什麼(如果有返回值的話)或者它接受什麼樣的參數。我可能知道參數名稱和個數,但這並不總是足夠的(如下面代碼所示):

1 Function doTheThing {

2 let error = false;

3

4 // About a million lines of code that might cause an error

5

6 return error;

7 }

8

9 function consumeTheThing {

10 let error = doTheThing;

11 if (error) {

12 // What do I do with the error now?

13 }

14 }

這就是我想要表達的。這裡的“error”是一個布爾型的值嗎?當我看到第2行時,它看起來確實是這樣的,但是從那裡到結束的“doTheThing”行之間的一百萬行代碼中間的“error”呢?它可能是一個字符串,或者一個對象,或者天知道是什麼。

你可能會認為這種靈活性是一種資產。它可以是,但更多的時候,它是一個陷阱,引誘你進入一種容易出錯的方式,在你和你的同事之間製造很多小挫折。有沒有在進入別人的代碼中,感到自己像在迷宮裡的感覺?

這就是你的代碼在別人看來的樣子。你可以用JavaScript編寫“好”的代碼,但是很少有關於該語言的內容鼓勵你這樣做。

而這正是TypeScript的美妙所在。它不會強迫你成為一個好的開發人員。但它給了讓你成為好的開發人員的工具。

TypeScript 让你不会想用回 JavaScript

TypeScript缺點

TypeScript有缺點嗎?當然有。

更多的打字(指定類型),無論是從兩個方面的那一個來看都是這樣。你的鍵盤會磨損得更快(這可能是你們中使用蝴蝶鍵盤的人所擔心的),這沒什麼大不了的。

但是一些JavaScript開發人員討厭在每個新函數或變量中鍵入類型。你不必非這麼做不可,但是如果你不使用類型,為什麼要使用TypeScript呢?

因為代碼必須編譯,因此每次更新和測試運行需要稍長一點時間。其實需要的只是多幾秒鐘而已,而使用TypeScript節省的時間遠遠超過編譯它所花費的時間。

構建一個項目的複雜性有時是非常痛苦的。這是真的。如果你不熟悉你的構建工具,構建一個新項目可能是一個令人沮喪的體驗。

短期內我的建議是找一個啟動項目讓你開始。至於長期的建議,我建議你花時間學習工具-tsc,Babel,WebPack和所有的有用的工具。

我覺得我的論點有點傾向性。我並沒有把重點放在TypeScript的缺點上,而是放在更多地強調優點上。我猜這也是我不會花太多時間論證每頓飯都吃麥當勞的好處的原因,因為這樣做的好處是有限的(不用再做飯了……我想只是這樣)。

TypeScript 让你不会想用回 JavaScript

關於TypeScript的統計

像往常一樣,StackOverflow提供的數據會判斷我的看法是對還是錯。表面上的數據來看,我好像錯得太離譜了。

根據StackOverflow 2019開發者調查報告,JavaScript已經連續第七年成為StackOverflow上談論最多的語言,67.8%的受訪者都在使用它,而TypeScript在這個排名中名列第十,它正在被21.2%的受訪者使用。

但是在2018年,TypeScript的這個統計數字只為17.4%,而再前一年僅為9.5%。2016年的時候,甚至只有0.47%的受訪者使用TypeScript。

在這個角度來看,TypeScript這些年來有了驚人的增長,這主要歸功於Angular框架,它在早些時候放棄了對JavaScript的支持。

當你看到“最受歡迎”的語言排名時,TypeScript的表現更加搶眼了,它以73.1%的比分排名了第三位(位列Rust和Python之後)。而JavaScript以66.8%排在第11位。

TypeScript 让你不会想用回 JavaScript

前景

我不認為TypeScript會很快取代JavaScript,理解後者對於前者的工作至關重要。而且我們也不會看到TypeScript在任何瀏覽器中以本機方式運行。

TypeScript是一個預處理器,就像之前的CoffeeScript一樣。TypeScript和CoffeeScript的區別在於後者是對構建它的語言的根本性改變,而TypeScript是一種自然演變。這不僅僅使得學習它更容易,而且使得從JavaScript項目轉換為TypeScript的過程更為漸進。首先簡單地將所有以.js結尾的文件重命名為以.ts為結尾的文件,你就有了一個TypeScript項目!

然後,你就可以一步一步地開始採用TypeScript的語言特性。我不能保證這個過程會很容易,但是它會告訴你一些JavaScript永遠無法做到的事情。當你開始下一個項目時,TypeScript編譯器將會在那裡等待你。

所以,使用了TypeScript,我知道我再也不會用回JavaScript了。

原文:https://medium.com/JavaScript-in-plain-english/ill-never-go-back-to-JavaScript-16370dc264a0

本文為 CSDN 翻譯,轉載請註明來源出處。

【End】


分享到:


相關文章: