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