TypeScript

關於 TypeScript 是什麼?


TypeScript 是 JavaScript 的強類型版本。然後在編譯期去掉類型和特有語法,生成純粹的 JavaScript 代碼。由於最終在瀏覽器中運行的仍然是 JavaScript,所以 TypeScript 並不依賴於瀏覽器的支持,也並不會帶來兼容性問題。


對於個人而言, 使用 TypeScript 中間有被 TypeScript 的配置與升級折騰到想砸電腦的時候,也有提前發現錯誤時的暗自慶幸,同時也有因為找不到類型定義文件而自己手寫,提PR補全的時候。總的來說使用 TypeScript 的這一年,什麼感覺都有。但最後還是依然堅持使用 TypeScript ,因為其帶來的效率提升是遠遠大於環境升級所帶來的開銷的。

穩定壓倒一切

作為程序員,自然希望代碼上線之後能安安穩穩的跑著,而不是突然報錯崩潰啥的。所以 TypeScript 之前最被看重的就是靜態類型檢查功能。

至於靜態類型檢查的作用,在知乎的另一個回答中有相關的回答:

靜態類型檢查可以避免很多不必要的錯誤, 不用在調試的時候才發現問題 (其實有的時候根本調試不出問題, 只是默默地把坑挖了, 說不定埋的就是個炸彈, 之前用 TypeScript 重寫應用的服務器端程序, 寫完之後就發現了不少暫時沒有影響到運行的嚴重問題).

懶人的自我救贖

然而,我是個很“懶”的人,不願在重複的事情上花上很多時間,也不喜歡像背書一下,背下來 Api 文檔。更希望自己的時間能專注於核心業務的開發,而非邊邊角角的事情。

去年十月,在因為實際學習需要,接觸越來越多前端框架時候,感覺整天的開發,大半的時間都浪費在了查文檔上,特別是一些 React 的組件,props又多又長……每次寫的時候,都得回去翻文檔,簡直絕望。

TypeScript - 不僅快,而且穩

TypeScript - 不僅快,而且穩

在這種每天近乎絕望的重複勞動下,我開始嘗試去找解決方法,再到後來有一天接觸了 TypeScript ,感覺到這就是自己想要的功能。嗯……看中的不是 TypeScript 的穩定性,而是 TypeScript 的代碼提示。

比如寫 Node.js,使用 TypeScript 與 不使用的區別是這樣的:

TypeScript - 不僅快,而且穩

不僅不用手動翻閱 Api, 而且參數是什麼也都一清二楚了。

且TypeScript 的代碼提示是基於類型文件工作的,而相比於各個編輯器自己定義的代碼片段來說,不僅有大量的志願者去維護,更新及時,而且種類繁多,基本現有的流行框架類庫,都有相應的類型定義文件。

所以自打用上 TypeScript 後,就過上了再也不用去費腦子記 Api 和參數的日子,開發效率與幸福感都得到了大大的提升。

不止穩,更要快

而 TypeScript 的快,不僅體現在代碼提示上,同時也體現於重構、可讀性和配套的編輯器上。

代碼重構

在重構上,這個自己是有實際體會的,如果寫JS,重構時候不小心改了啥,除了運行時候能發現,其他時候往往難以察覺,且 ESLint 也只能是排查簡單的問題,所以出了BUG會非常麻煩。而 TypeScript 不一樣,重構了,重新編譯一下就知道,哪裡錯了,哪裡改動了不應該改的。對於我自己這種時不時就會重構的人來說,省時又省力。

可讀性

可讀性上,TypeScript 明顯佔優,查看開源代碼時,如果註釋不是很完善,往往會看的雲裡霧裡,而 TypeScript 在同等條件下,至少有個類型,能讓自己更容易明白代碼的參數、返回值和意圖。

這個是不得不提的部分,因為 VSCode 實在是太方便了,性能也高,且編輯器自身保持著一個高速的開發與迭代狀態,時不時就能感受到 VSCode 開發團隊的誠意和其所帶來的驚喜。

因為都是微軟家產品的原因,VSCode 對 TypeScript 的支持也相當完善。各種插件也層出不窮,基於 TypeScript 做的 Automatic Type Acquisition 功能使得 JavaScript 的用戶也能享受到詳細的代碼提示功能,這一點上比 Sublime 等編輯器方便了很多。

關於 VSCode 編輯器的上手與配置,可以看閻王發表的這篇文章:如何快速上手一款 IDE - VSC 配置指南和插件推薦

解放自己,專注業務核心開發:TypeScript 編輯器插件推薦

當然,每次寫 TypeScript 時,依然會遇到一些煩心的問題和重複的勞動。比如說,TypeScript的類型定義文件是需要手動下載相應的 @types 包的,雖然相比於之前的方式已經進化了很多,但是每次還要重複,依然會覺得繁瑣。所以下面會推薦自己常用的幾個插件,把自己從繁瑣無趣零成長的工作中解放出來。

TypeScript Importer-告別手動重複寫import的日子

插件地址:TypeScript Importer

這個是我最喜歡的插件,具體的作用,一圖勝千言:


TypeScript - 不僅快,而且穩


在長長的路徑裡,導入另一個文件夾深處的模塊,那種感覺是絕望……每次都要重複的import,每次都要重複的判斷路徑,每次都要重新寫一遍import……

雖然工作量也不大,但是確實會影響心情和效率。

Types auto installer - 自動安裝相應的類型定義文件

插件地址:Types auto installer

在之前,你安裝一個模塊並在 TypeScript 運行兩段命令。以lodash為例:

<code>npm i lodash --save
npm i @types/lodash --save/<code>

當然,你也可以合併到一句話去寫。雖然工作量不大……但是架不住量多啊……每開一個項目都得來這麼一次,簡直絕望……

所以當時就想著自己寫一個自動安裝類型定義文件的小工具,後面確實也寫出來了,只是再後來又發現 VSCode 有這個插件,功能也很完善,就用它的了。插件的作用很簡單,就是當你運行:

<code>npm install --save lodash/<code>

它會自動執行:

<code>npm install --save @types/lodash/<code>

與此同時還有一鍵下載安裝所有 package.json 依賴類型定義文件的功能,可以說是非常方便了。

Sort Typescript Imports-給你import的模塊們排序

插件地址:Sort Typescript Imports

同樣,話不多說,有圖有真相:


TypeScript - 不僅快,而且穩


這是一個看起來沒什麼作用的插件……因為其實 import順序是否整潔有序好像對開發效率啥的並沒有很大的提升。但這是一個你接受了它的設定,就可能會覺得十分有趣的插件……

具體的作用就是,讓你的 imports 更有順序,相近文件夾的排列在一起。看起來會更好看一些。

Emmm……如果一定要說作用的話,就是更好看一些吧……很符合我這種有輕微代碼潔癖的人的心態……

結語:為什麼要關注這個Typescript

開發環境的搭建。沒有官方的cli,或者自己要做一些拓展(比如用ts)真的非常煩人。各種報錯,而這種在開發環境上積累的經驗和踩的坑是價值非常低的。(因為基本最後翻官方配置文檔都能解決耗時長,學習價值低,更新速度快。


分享到:


相關文章: