TypeScript 簡介與優勢

TypeScript 簡介與優勢

本節首先介紹了 TypeScript 與 JavaScript 的關係,梳理清楚 TypeScript、JavaScript、ECMAScript 這三個名詞所代表的具體含義。另外通過三個方向的闡述說明了爲什麼要使用 TypeScript,以及現在學習 TypeScript 的必要性。

0. 寫在前面

TypeScript 不是一門全新的語言,TypeScript 是 JavaScript 的超集,它對 JavaScript 進行了一些規範和補充。學習本教程,請務必擁有 JavaScript 基礎。沒有 JavaScript 基礎的同學,請先學習相關 JavaScript 相關基礎知識。

1. TypeScript 與 JavaScript

1.1 TypeScript 簡介

官方定義:
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open source.

  • TypeScript 是 JavaScript 的超集,它可以編譯成純 JavaScript。
  • TypeScript 基於 ECMAScript 標準進行拓展,支持 ECMAScript 未來提案中的特性,如裝飾器、異步功能等。
  • TypeScript 編譯的 JavaScript 可以在任何瀏覽器運行,TypeScript 編譯工具可以運行在任何操作系統上。
  • TypeScript 起源於開發較大規模 JavaScript 應用程序的需求。由微軟在2012年發佈了首個公開版本。

從以上特性中可以看到,TypeScript 與 JavaScript 、ECMAScript 有着非常深入的聯繫。在詳細介紹 TypeScript 之前,先來簡單瞭解一下 ECMAScript 與 JavaScript的發展。

1.2 ECMAScript

ECMA International: 一個制定技術標準的組織。

ECMA-262:由 ECMA International 發佈。它包含了腳本語言的標準。

ECMAScript: 由 ECMA International 以 ECMA-262 和 ECMA-402 規範的形式進行標準化的。

JavaScript: 通用腳本編程語言,它遵循了 ECMAScript 標準。 換句話說,JavaScript 是 ECMAScript 的方言。

通過閱讀 ECMAScript 標準,你可以學會怎樣實現一個腳本語言;而通過閱讀 JavaScript 文檔,你可以學會怎樣使用腳本語言編程。

2019年6月,ECMA-262 第10版定義了 ECMAScript 2019 通用編程語言。

1.3 JavaScript版本

說 JavaScript 的版本,實際上就是說它實現了 ECMAScript 標準的哪個版本

圖片描述

2. 爲什麼要用 TypeScript

2.1 靜態類型

我已經熟練使用 JavaScript,爲什麼要用 TypeScript 呢?

回答這個問題前,先來看看下面這些 JavaScript 中的常見錯誤:

  • Uncaught TypeError: Cannot read property
  • TypeError: ‘undefined’ is not an object
  • TypeError: null is not an object
  • TypeError: Object doesn’t support property
  • TypeError: ‘undefined’ is not a function
  • TypeError: Cannot read property ‘length’

仔細看下不難發現,這些錯誤大都是一些比較初級的類型錯誤。

JavaScript 只會在 運行時 纔去做數據類型檢查,而 TypeScript 作爲靜態類型語言,其數據類型是在 編譯期間 確定的,編寫代碼的時候要明確變量的數據類型。使用 TypeScript 後,這些低級錯誤將不再發生。

2.2 三大框架支持

我們學習一門新技術會關心它的生命力問題,如果這門技術在較短時間內就要被淘汰,那花費大量的時間學習也是不划算的。TypeScript 能夠保持長久生命力的另一個原因,就是統治前端的三大框架對 TypeScript 的支持。

  • Angular 是 TypeScript 最早的支持者,Angular 官方推薦使用 TypeScript 來創建應用。
  • React 雖然經常與 Flow 一起使用,但是對 TypeScript 的支持也很友好。
  • Vue3.0 正式版即將發佈,由 TypeScript 編寫。

從國內的氛圍來看,由前端三大框架引領的 TypeScript 熱潮已經涌來,很多招聘要求上也都有了 TypeScript 的身影。

2.3 兼容 JavaScript 的靈活性

TypeScript 雖然嚴謹,但沒有喪失 JavaScript 的靈活性,TypeScript 非常包容:

  • TypeScript 通過 tsconfig.json 來配置對類型的檢查嚴格程度。
  • 可以把 .js 文件直接重命名爲 .ts
  • 可以通過將類型定義爲 any 來實現兼容任意類型。
  • 即使 TypeScript 編譯錯誤,也可以生成 JavaScript 文件。

這裏先簡單介紹下 any 類型,後續會詳細講解。比如一個 string 類型,在賦值過程中類型是不允許改變的:

let brand: string = 'imooc'
brand = 1  // Type '1' is not assignable to type 'string'.ts(2322)

如果是 any 類型,則允許被賦值爲任意類型,這樣就跟我們平時寫 JavaScript 一樣了:

let brand: any = 'imooc'
brand = 1 

基於上面這些特點,一個熟悉 JavaScript 的工程師,在查閱一些 TypeScript 語法後,即可快速上手 TypeScript,加油!

3. 小結

本節主要介紹了:

  • TypeScript 與 JavaScript 的關係,知道了 TypeScript 是 JavaScript 的超集,可以支持 ECMAScript 的各種新特性。
  • 從三個方面論述了“爲什麼要用 TypeScript”,從中可以看出 TypeScript 已經是當前大前端技術棧中非常重要的一環了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章