新聞中心
譯者│翟珂

紅橋ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
JavaScript是深受大眾喜歡的腳本語(yǔ)言。自從它誕生以來(lái),它一直是網(wǎng)絡(luò)開(kāi)發(fā)的主導(dǎo)語(yǔ)言。20年后,微軟推出了TypeScript,是JavaScript的超集,專(zhuān)為開(kāi)發(fā)大型網(wǎng)絡(luò)應(yīng)用程序而設(shè)計(jì)。
如果你對(duì)Typescript和JavaScript有所了解,你就會(huì)知道它們不會(huì)相互競(jìng)爭(zhēng)。它們有一種獨(dú)特的關(guān)系,共同發(fā)展。讓我們來(lái)分析一下它們的優(yōu)缺點(diǎn),以便將來(lái)你能夠更好的為項(xiàng)目選型。
什么是JavaScript?
JavaScript是世界上最流行的編程語(yǔ)言之一。
讓我們從頭講起。自90年代以來(lái),JavaScript一直是網(wǎng)絡(luò)應(yīng)用的核心技術(shù)。它用來(lái)與HTML和CSS結(jié)合創(chuàng)建交互式網(wǎng)頁(yè)。它是一種具有動(dòng)態(tài)類(lèi)型和JIT(Just-in-Time)編譯器的高級(jí)語(yǔ)言。
JavaScript是一種多范式語(yǔ)言,支持各種編程風(fēng)格,如函數(shù)式編程、命令式編程和事件驅(qū)動(dòng)式編程。它還支持編寫(xiě)服務(wù)器端。JavaScript是在ECMAScript(ES)標(biāo)準(zhǔn)的基礎(chǔ)上形成的。在JavaScript中使用最廣泛的ES標(biāo)準(zhǔn)是ES5和ES6。
什么是TypeScript?
TypeScript (TS) 是一個(gè) JavaScript 超集,其目標(biāo)與 JavaScript 相同。
TypeScript 是一種開(kāi)源編程語(yǔ)言,具有許多特性,如繼承、類(lèi)、可見(jiàn)性范圍、命名空間、接口、合并和其他現(xiàn)代特性以及靜態(tài)和動(dòng)態(tài)類(lèi)型。它支持注釋、變量、函數(shù)、語(yǔ)句、模塊和表達(dá)式。
作為一種強(qiáng)類(lèi)型的編程語(yǔ)言,TypeScript調(diào)試(在編譯過(guò)程中)更容易,所以更適用于復(fù)雜應(yīng)用。
為什么會(huì)出現(xiàn) TypeScript?
JavaScript項(xiàng)目的復(fù)雜性呈指數(shù)級(jí)地增長(zhǎng)。最初,JavaScript只被用作客戶端語(yǔ)言。但開(kāi)發(fā)人員慢慢意識(shí)到,它也可以作為一種服務(wù)器端的編程語(yǔ)言。
盡管JavaScript有很多優(yōu)點(diǎn),但它在服務(wù)器端會(huì)變得混亂和復(fù)雜(特別是對(duì)于大規(guī)模的應(yīng)用程序)。同時(shí),JavaScript還會(huì)使大型復(fù)雜的應(yīng)用程序難以維護(hù)。
而瀏覽器不斷的迭代和跨瀏覽器的兼容性也要求對(duì)底層的JavaScript進(jìn)行改變,但繼續(xù)改造JavaScript來(lái)解決這些并不實(shí)際。所以TypeScript應(yīng)運(yùn)而生。
JavaScript 和 TypeScript 之間的主要區(qū)別
|
JavaScript |
TypeScript |
|
支持動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容 |
為幫助項(xiàng)目解決代碼復(fù)雜性而創(chuàng)建的JavaScript超集 |
|
解釋性語(yǔ)言,因此只有在運(yùn)行時(shí)才會(huì)發(fā)現(xiàn)錯(cuò)誤 |
在編譯期間可以檢測(cè)和修復(fù)錯(cuò)誤 |
|
弱類(lèi)型,無(wú)法選擇靜態(tài)類(lèi)型 |
強(qiáng)類(lèi)型,支持靜態(tài)和動(dòng)態(tài)類(lèi)型 |
|
可以直接在瀏覽器中使用 |
將代碼轉(zhuǎn)換為 JS 以實(shí)現(xiàn)瀏覽器兼容性 |
|
不支持模塊、泛型和接口 |
支持模塊、泛型和接口 |
|
不支持可選參數(shù) |
可選參數(shù)可以添加到函數(shù)中 |
|
使用數(shù)字和字符串作為接口 |
數(shù)字和字符串是對(duì)象 |
|
大量社區(qū)支持,包括大量文檔 |
社區(qū)支持正在增長(zhǎng),不像以前那么強(qiáng)大 |
|
不支持原型設(shè)計(jì) |
原型設(shè)計(jì)是一個(gè)可行的選擇 |
|
不需要事先的腳本知識(shí) |
學(xué)習(xí)和編碼需要時(shí)間,需要腳本知識(shí) |
|
無(wú)需設(shè)置構(gòu)建環(huán)境 |
對(duì)于靜態(tài)類(lèi)型定義,需要適當(dāng)?shù)貥?gòu)建設(shè)置(npm 包) |
TypeScript 比 JavaScript 更好嗎?
根據(jù)我的描述,TypeScript似乎只是JS的一個(gè)更好的版本。所以你可能會(huì)認(rèn)為T(mén)S會(huì)在不久的將來(lái)取代JavaScript。其實(shí)不然,我仍然相信JavaScript會(huì)有用武之地。
復(fù)雜性是一個(gè)需要考慮的關(guān)鍵因素。
JavaScript 非常適合更簡(jiǎn)單的應(yīng)用程序,因?yàn)樗梢栽谒衅脚_(tái)(跨平臺(tái))上運(yùn)行并且非常輕量級(jí)。另外,與JS的最小開(kāi)銷(xiāo)相比,編譯TS代碼需要的時(shí)間和CPU資源對(duì)項(xiàng)目而言會(huì)更麻煩。
與JavaScript相比,TypeScript有很多好處。
TS 使代碼重構(gòu)變得更加容易,并且更強(qiáng)調(diào)顯式類(lèi)型,使開(kāi)發(fā)人員能夠掌握各種組件的交互方式。由于它支持編譯時(shí)調(diào)試,對(duì)于處理大型復(fù)雜應(yīng)用程序的團(tuán)隊(duì)來(lái)說(shuō),有一定的好處。
為任何項(xiàng)目設(shè)置TypeScript都是容易的。一些框架,如Angular,默認(rèn)使用TypeScript。因此,在我看來(lái)TypeScript更勝一籌。
TypeScript 的缺點(diǎn)
盡管TypeScript有許多優(yōu)點(diǎn),但它也有某些缺點(diǎn)。
需要準(zhǔn)確的定義類(lèi)型,在使用的時(shí)候是比較麻煩的,但從長(zhǎng)遠(yuǎn)來(lái)看,可以節(jié)省時(shí)間和資源。這是選擇JavaScript的最常用的理由。
你不可能把一個(gè)大型的JavaScript項(xiàng)目遷移到嚴(yán)格的TypeScript上。雖然有一些工具可以協(xié)助,但你還是需要自己遷移大部分的代碼。
TypeScript代碼編譯需要時(shí)間和CPU資源,所以需要等待一會(huì)才能看到改變。與傳統(tǒng)的JavaScript不同,實(shí)時(shí)編碼會(huì)有一點(diǎn)影響。在海量代碼庫(kù)上,這些工具也會(huì)顯著減慢,導(dǎo)致導(dǎo)航等顯著延遲。
什么時(shí)候應(yīng)該將項(xiàng)目遷移到TypeScript?
當(dāng)代碼的大小、復(fù)雜性和出錯(cuò)率增加時(shí),需要在編譯過(guò)程中確定具體問(wèn)題時(shí),就可以使用TypeScript。
TypeScript 還具有接口和訪問(wèn)修飾符,允許開(kāi)發(fā)人員在單個(gè)代碼庫(kù)上進(jìn)行協(xié)作和交互。因此,最好在項(xiàng)目一開(kāi)始就使用TypeScript。
但是你如果喜歡像Ember.js或Glimmer.js這樣的框架,那你就不會(huì)喜歡TypeScript,這些框架的首選是JavaScript。
結(jié)論
由于 TypeScript 轉(zhuǎn)換為普通的 JavaScript 代碼,因此你可以將其用作 JavaScript 的替代品。這就是為什么它更容易被接受。當(dāng)然我們也能看到TS被集成到流行的JS框架的核心構(gòu)建組件和庫(kù)中,如Angular、React和Vue.js。
就個(gè)人而言,我是TypeScript的粉絲,通常建議新項(xiàng)目使用它。在開(kāi)始的時(shí)候多花點(diǎn)心思,就省得以后頭疼了。
我希望這篇文章能夠幫助你更好地理解這兩種腳本語(yǔ)言之間的差異。至少,你已經(jīng)對(duì)TypeScript到底是什么有了更好的了解。現(xiàn)在你可以為你的下一個(gè)項(xiàng)目作出更明智的選擇了。
譯者介紹
翟珂,社區(qū)編輯,目前在杭州從事軟件研發(fā)工作,做過(guò)電商、征信等方面的系統(tǒng),享受分享知識(shí)的過(guò)程,充實(shí)自己的生活。
文章題目:你真的知道 JavaScript 和 Typescript 之間的區(qū)別嗎?
標(biāo)題URL:http://m.fisionsoft.com.cn/article/coeshde.html


咨詢
建站咨詢
