天天看點

#yyds幹貨盤點#2022 年 TypeScript 的相關性

​​現在是 2022 年。TypeScript​​​目前的相關性是無可争議的。​​TypeScript 已經被很多​​​​很多​​使用者主導了前端開發者體驗。到目前為止,您可能已經知道 TypeScript 是 JavaScript 的超集,它通過添加類型聲明、類和其他具有類型檢查的面向對象功能的文法來建構在 JavaScript 之上。

當我說主導時,我的意思是 TypeScript 自 2012 年推出以來就在現場大放異彩。

資料來源:  ​​2021 年 10 月狀态​​ (GitHub)

這種增長令人難以置信,尤其是考慮到它在 2017 年才​真正​開始起飛。但是随着我們進入 2022 年,TypeScript 的發展究竟有多大意義?TypeScript 不會永遠以這種方式飛速發展……對吧?!

稍微探讨一下這個想法,看看 TypeScript 今天在哪裡,以及它将如何在未來的前端開發中繼續發揮作用,這很有趣。Jake Albaugh 本人已經戳穿了 TypeScript 的相關性,但從​​了解 JavaScript 是否讓​您​成為開發人員​​的相關性的角度來看。

那麼,TypeScript 的未來相關性是什麼樣的呢?讓我們來看看。

TypeScript 的根源

好的,是以我們知道 TypeScript 為 JavaScript 添加了文法。​​TypeScript 的​​​ ​​編譯器​​​使用這種文法在代碼錯誤發生之前嗅出它們,然後它會吐出浏覽器可以了解的 vanilla JavaScript。值得一提的是,TypeScript 由 Microsoft 維護,​​在 Apache 2 license 下獲得許可​​。

如果不提及 ECMAScript (ES),我們就不能真正談論 TypeScript,這是由​​ECMA International​​​标準化的 JavaScript 标準和腳本語言規範。JavaScript 命名約定從 ES1 開始,并發展到 ES6。最新版本,即第 12版——或​​ECMAScript 2021——​​​于​2021 年 6 月釋出。

TypeScript 是 ECMAScript 2015 的嚴格超集。這意味着 JavaScript 文法也是 Typescript 文法。相反,TypeScript 程式可以毫不費力地使用 JavaScript。

#yyds幹貨盤點#2022 年 TypeScript 的相關性

學分: ​​​西瑪撒哈拉​​

了解這一切很重要,因為我們需要知道 TypeScript 的根源在哪裡,以便探究它可能的未來。

TypeScript 的元件

TypeScript 的三個基本元件使它變得如此出色。我們不僅獲得了 TypeScript 語言附帶的上述類型檢查,還獲得了 TypeScript 編譯器和​​語言服務​​。

#yyds幹貨盤點#2022 年 TypeScript 的相關性

可以這麼說,這些是保持 TypeScript 相關性的部分。該語言是開發人員喜歡編寫的。編譯器是為浏覽器解釋語言的東西。該服務以極快的速度按需處理語言。沒有這些,TypeScript 就不是它的樣子。

打字稿支援

TypeScript 相關性的另一個關鍵部分經常被忽視:​文本編輯器對它的支援非常好。​TypeScript 的相關性隻有在它易于通路并且幾乎任何前端都可以接受的情況下才具有相關性。

TypeScript 最初僅在​​Microsoft 的 Visual Studio​​代碼編輯器中得到支援。有道理,對吧?我的意思是,TypeScript 由微軟和所有人維護。但是随着 TypeScript 的發展,越來越多的代碼編輯器和 IDE 開始以原生方式或通過插件支援它。

除了 Visual Studio Code 之外,一些最受歡迎的編輯器和 IDE 還包括:

  • ​​原子​​
  • ​​崇高的文本​​
  • ​​網絡風暴​​
  • ​​Emacs​​
  • ​​NetBeans​​
  • ​​蝕​​
  • ​​新Vim​​

更多的支援帶來更多的 TypeScript 相關性。您幾乎可以使用任何代碼編輯器并開始編寫 TypeScript 代碼這一事實使其越來越成為首選,因為它可以在您想要的地方輕松使用。

TypeScript 的演變

從 2012 年首次釋出到現在(2022 年初),TypeScript 的每個版本都釋出了許多改進,例如:

  • TypeScript 1.6 引入了​

    ​.tsx​

    ​​檔案擴充名,它​​在 TypeScript 檔案中啟用了 JSX​​​,并使 new​

    ​as​

    ​運算符成為預設的強制轉換方式。
  • TypeScript 2 帶來了重大改進,它允許開發人員有選擇地防止變量被配置設定空值。
  • TypeScript 2.3 版引入了對 ES6 功能的支援,例如​​生成器和疊代器​​。
  • TypeScript 3 帶來了語言增強功能,例如REST 參數中的​​元組​​和擴充表達式。
  • ​​TypeScript 4​​​(在撰寫本文時我們目前處于 4.5.2)通過改進元組、模闆文字類型、更智能的類型别名保留以及對​

    ​Awaited​

    ​​和​

    ​Promise​

    ​.

這正是您可能期望看到蓬勃發展的程式設計語言疊代和釋出新功能的那種速度。同樣,在評估 TypeScript 向前發展的相關性時,這是一個很好的背景。

TypeScript 的受歡迎程度

我們已經确定 TypeScript 非常受歡迎。這篇文章開頭的圖表顯示,TypeScript 在短短幾年内以驚人的速度增長,成為第四大最受歡迎的語言。但不要隻相信我和 GitHub 的話(畢竟它歸微軟所有)。這是來自不同地方的一堆已發表的研究,它們都說了同樣的話。

紅僧

開發行業分析公司 RedMonk在其 2021 年最受歡迎語言清單中将 TypeScript 排名第八​​:​​

[TypeScript] 是否有能力提升并最終超越 C#、C++ 甚至 PHP 等長期在位者,或者 TypeScript 是否基本上處于或接近其潛力的極限?不可能說有任何可靠性,但有趣的是,一年前的這個時候,TypeScript 在排名所依據的綜合得分中落後第五名的語言 6 分,但在這次運作中,差距隻有 2點。當然,過去的表現并不總能預測未來的表現,但它至少表明 TypeScript 可能還有一些空間。

PYPL指數

PYPL​​指數​​是衡量 Google 搜尋程式設計語言教程的名額。這不是精确的科學,而是一個很好的興趣名額。而且,随着時間的推移,TypeScript 似乎正朝着平坦的方向發展。TypeScript 目前排名第八,與一年前相比,PYPL 表明 TyeScript 總體趨勢持平,而 Python 和 C++ 等其他語言則同比增長。

Stack Overflow 2021 開發者調查

根據 Stack Overflow 的​​2021 年開發者調查​​,TypeScript 與 PYPL 所表明的一樣受歡迎,在大約 83,000 名開發者中排名第七。

#yyds幹貨盤點#2022 年 TypeScript 的相關性

Stack Overflow 年度調查是最可信和最受期待的開發者調查之一。它使用來自世界各地的龐大開發人員基礎來得出結論。這說明 TypeScript 在前端社群中的相關性如何?嗯,它不僅是第七大最受歡迎的語言,而且​​是開發人員最想使用的第二大技術​​(其次是 Python),也是第三大最受歡迎的語言(在 Rust 和 Clojure 之後)。

#yyds幹貨盤點#2022 年 TypeScript 的相關性

資料來源:​​​2021 年 Stack Overflow 開發者調查​​

2020 年 JavaScript 狀态

這項年度調查(下一項現已​​開放​​!)顯示,TypeScript 在開發人員中的滿意度高達 93%(高于 2019 年的 89%),在排名中名列前茅。它還在興趣(從 66% 上升到 70%)、使用率(從 66% 上升到 78%)和認知度(100%,與 2019 年相比驚人地持平)獲得了最高獎項。

GitHub 2.0 語言排名

​​該排名​​是一項與 GitHub 互動的分析,以找出 GitHub 上最常用的語言。這表明 TypeScript 的相關性在于 TypeScript 在 2021 年第一季度排名第七,然後在第四季度躍升至第四,并且同比變化最大。

​​來源​​​​來源​​

好的,很明顯 TypeScript 很重要。但同樣,它向前發展的相關性有多大?

TypeScript 在 2022 年及以後的相關性

到目前為止,我已經嘗試繪制一張圖來确定 TypeScript 适合前端開發領域的位置,展示它是如何迅速演變為一種成熟而嚴肅的程式設計語言競争者,并且正在迅速成為兩種程式設計語言選擇和最喜歡的人。

換句話說:​TypeScript 在今天很重要。​

但是,如果我們想猜測 TypeScript 目前的成功在哪裡,那麼值得在 GitHub 上檢視​​官方的 TypeScript 路線圖。​​

這是我們必須期待的:

  • ​typeof​

    ​班級變化
  • 在子類中的超級調用之前允許更多代碼
  • 廣義索引簽名
  • ​--noImplicitOverride​

    ​​和​

    ​override​

    ​關鍵字
  • 靜态索引簽名
  • ​unknown​

    ​用作 catch 子句變量的類型
  • 調查名義打字支援
  • 扁平化聲明
  • 實作 ES 裝飾器提案
  • 調查環境、棄用和條件裝飾器
  • 調查部分類型參數推斷
  • 實施快速修複來搭建本地​

    ​@types​

    ​包
  • 調查俳句或五音抑揚格中的錯誤資訊
  • 為函數表達式和箭頭函數實作裝飾器

我認為所有這些路線圖功能都令人興奮,并将在可預見的未來保持 TypeScript 的相關性方面發揮重要作用。雖然我認為所有這些都值得深入讨論,但這裡有一些我認為是 2022 年及以後 TypeScript 的核心。

扁平化聲明

例如,​​扁平化聲明提案​​旨在為 TypeScript 項目啟用捆綁聲明,以便一個庫可以與單個 TypeScript 檔案一起使用,而不管它内部可能包含多少子產品。

扁平化聲明的想法是,​

​.d.ts​

​​除了單個輸出​

​.js​

​檔案外,還應由 TypeScript 編譯器發出單個合并和扁平化的檔案。生成 DTS 時應考慮并尊重通路修飾符。擁有一個帶有扁平化聲明的聲明檔案将使開發人員的事情變得更加容易,并從長遠來看提高可維護性。

Ambient、Deprecated 和 Conditional 裝飾器

設計時裝飾器——例如​​環境​​​和​​條件​​​裝飾器——是另一個值得期待的特性。裝飾器使開發人員能夠以聲明的方式将注釋和中繼資料添加到現有代碼中。在 TypeScript 中,每個裝飾器都有一個特殊的名稱​

​@​

​​,以不會在轉換後的 JavaScript 中發出,但可以在​

​.d.ts​

​輸出中持久化。

例如,如果您可以在有人嘗試使用已棄用的方法或屬性時發出警告,以便他們可以更新到更新的庫版本。通過在未來将環境、棄用和條件裝飾器作為 TypeScript 規範的一部分,該語言将為開發人員提供更強大的方法來注釋他們的代碼并在其中包含中繼資料。

函數表達式/箭頭函數的裝飾器

函數和箭頭表達式的裝飾器是我認為将建立在 TypeScript 持續相關性之上的另一個特性。向這些表達式添加注釋或中繼資料将使開發人員能夠在運作時确定有關已應用裝飾器的資訊。

調查俳句或五音抑揚格中的錯誤資訊

好的,是以也許這不是關于 TypeScript 強大功能集的相關性,但我認為它為語言添加的個性是使 TypeScript 易于使用的整體包的一部分。收到這樣的錯誤消息會多麼酷(和愉快):

我的代碼正在破壞

忽略此錯誤消息

一切都很好

​​#TSConf​​

- 尼克尼西 ​​(@nicknisi) ​​2018 年 3 月 13 日​​

繼續閱讀