JavaScript 敗北,TypeScript 大勢(shì)所趨?
(給前端大學(xué)加星標(biāo),提升前端技能.)
來(lái)自:?CSDN?譯者:明明如月 責(zé)編:郭芮
https://medium.com/javascript-in-plain-english/is-typescript-the-way-forward-659caa2cb10f
由于TypeScript的先天優(yōu)勢(shì),TypeScript越來(lái)越受歡迎。那問(wèn)題來(lái)了:TypeScript 和 JavaScript 究竟哪個(gè)更好?JavaScript真的會(huì)敗北嗎?

以下為譯文:
你以前可能曾聽(tīng)說(shuō)過(guò)“TypeScript”這個(gè)詞。到現(xiàn)在 2019年,TypeScript 在 GitHub 最常用編程語(yǔ)言排行榜排名第 7 位,在增速最快的編程語(yǔ)言排行榜中占第 5 位。TypeScript (TS) 是微軟開(kāi)發(fā)的一種開(kāi)源編程語(yǔ)言,可以編譯成 JavaScript (JS) 代碼。自 2012 年發(fā)布以來(lái),這門語(yǔ)言一直保持活躍發(fā)展并且越發(fā)受歡迎。在早期,開(kāi)發(fā)社區(qū)就將 TypeScript 和 Angular 緊密聯(lián)系在一起。盡管用 JS 也不是不行,但是 Angular 強(qiáng)迫你使用 TypeScript。1. TypeScript 和 JavaScript 的區(qū)別是什么?Typescript 是 JavaScript 的超集,可以被編譯成 JavaScript 代碼。 用 JavaScript 編寫的合法代碼,在 TypeScript 中依然有效。 Typescript 是純面向?qū)ο蟮木幊陶Z(yǔ)言,包含類和接口的概念。 程序員可以用它來(lái)編寫面向?qū)ο蟮姆?wù)端或客戶端程序,并將它們編譯成 JavaScript 代碼。

TypeScript 引入了很多面向?qū)ο蟪绦蛟O(shè)計(jì)的特征,包括:
- interfaces ?接口
- classes ?類
- enumerated types 枚舉類型
- generics 泛型
- modules 模塊
- TS 是一種面向?qū)ο缶幊陶Z(yǔ)言,而 JS 是一種腳本語(yǔ)言(盡管 JS 是基于對(duì)象的)。
- TS 支持可選參數(shù), JS 則不支持該特性。
- TS 支持靜態(tài)類型,JS 不支持。
- TS 支持接口,JS 不支持接口。
- TS 在開(kāi)發(fā)時(shí)就能給出編譯錯(cuò)誤, 而 JS 錯(cuò)誤則需要在運(yùn)行時(shí)才能暴露。
- 作為強(qiáng)類型語(yǔ)言,你可以明確知道數(shù)據(jù)的類型。代碼可讀性極強(qiáng),幾乎每個(gè)人都能理解。
- TS 非常流行,被很多業(yè)界大佬使用。像 Asana、Circle CI 和 Slack 這些公司都在用 TS。
- TS 需要編譯。TS 得通過(guò)編譯才能變成 JS 代碼。
- 隨著時(shí)間的推移,類型可能變得非常復(fù)雜。當(dāng)項(xiàng)目不斷變大時(shí)這種情況十分常見(jiàn)。
- 盡管 TS 是類型安全的,在有些情況下編譯器也有檢查不出任何錯(cuò)誤的情況。當(dāng)我們修改編譯后的 JS 代碼時(shí),錯(cuò)誤就不可檢測(cè)了。不過(guò)隨著編譯器不斷改進(jìn),這種情況會(huì)越來(lái)越少。
4.?摘要
| JavaScript | TypeScript | |
|---|---|---|
| 語(yǔ)言 | 腳本語(yǔ)言 | 面向?qū)ο缶幊陶Z(yǔ)言 |
| 學(xué)習(xí)難度 | 靈活易學(xué) | 需要有腳本編程經(jīng)驗(yàn) |
| 類型 | 輕量級(jí)解釋編程語(yǔ)言 | 強(qiáng)類型的面向?qū)ο缶幊陶Z(yǔ)言 |
| 客戶端/服務(wù)端 | 客戶端服務(wù)端都有 | 側(cè)重客戶端 |
| 拓展名 | .js | .ts 或 .tsx |
| 耗時(shí) | 更快 | 編譯代碼需要些時(shí)間 |
| 數(shù)據(jù)綁定 | 沒(méi)有類型和接口的概念 | 使用類型和接口表示數(shù)據(jù) |
| 注解 | 不需要注解 | 使用注解才能最大限度發(fā)揮 TypeScript的特性 |
| 語(yǔ)法 | 所有的語(yǔ)句都寫在腳本標(biāo)簽內(nèi)。瀏覽器將腳本標(biāo)簽內(nèi)的文本識(shí)別為腳本 | 一個(gè) TypeScript 程序由模塊、方法、變量、語(yǔ)句、表達(dá)式和注釋構(gòu)成。 |
| 靜態(tài)類型 | JS 中沒(méi)有靜態(tài)類型的概念 | 支持靜態(tài)類型 |
| 模塊支持 | 不支持模塊 | 支持模塊 |
| 接口 | 沒(méi)有接口 | 支持接口 |
| 可選參數(shù)方法 | 不支持 | 支持 |
| 原型 | 沒(méi)有這種特性 | 支持原型特性 |
| 開(kāi)發(fā)者社區(qū) | JS 使用范圍很廣,被編程社區(qū)廣泛接受和使用 | TS 比較新,編程社區(qū)相對(duì)較小 |
| 參考選擇 | 小型項(xiàng)目 | TS 是一種面向?qū)ο笳Z(yǔ)言,代碼更簡(jiǎn)潔,可讀性和復(fù)用性強(qiáng)。因此 TS 更適合大型項(xiàng)目。 |
表格來(lái)自:Edureka
5.?結(jié)論那問(wèn)題來(lái)了:TypeScript 和 JavaScript 哪個(gè)更好?由于 TS 的先天優(yōu)勢(shì),TS 越來(lái)越受歡迎。但是請(qǐng)記住,TS 最終不可能取代 JS,因?yàn)?JS 是 TS 的核心。選擇 TypeScript 還是 JavaScript 要由開(kāi)發(fā)者自己去做決定。如果你喜歡類型安全的語(yǔ)言,那么推薦你選擇 TS。 如果你已經(jīng)用 JS 好久了,你可以選擇走出舒適區(qū)學(xué)習(xí) TS,也可以選擇堅(jiān)持自己的強(qiáng)項(xiàng),繼續(xù)使用 JS。本文到此結(jié)束,希望你能有所收獲,輕松快樂(lè)的學(xué)習(xí)。
分享前端好文,缺個(gè)?在看?
評(píng)論
圖片
表情
