自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你真的知道 JavaScript 和 Typescript 之間的區(qū)別嗎?

譯文 精選
開發(fā)
根據(jù)我的描述,TypeScript似乎只是JS的一個(gè)更好的版本。所以你可能會(huì)認(rèn)為TS會(huì)在不久的將來取代JavaScript。其實(shí)不然,我仍然相信JavaScript會(huì)有用武之地。

  作者│Piumi Gunawardhana

  譯者│翟珂

  JavaScript是深受大眾喜歡的腳本語言。自從它誕生以來,它一直是網(wǎng)絡(luò)開發(fā)的主導(dǎo)語言。20年后,微軟推出了TypeScript,是JavaScript的超集,專為開發(fā)大型網(wǎng)絡(luò)應(yīng)用程序而設(shè)計(jì)。

  如果你對(duì)Typescript和JavaScript有所了解,你就會(huì)知道它們不會(huì)相互競(jìng)爭(zhēng)。它們有一種獨(dú)特的關(guān)系,共同發(fā)展。讓我們來分析一下它們的優(yōu)缺點(diǎn),以便將來你能夠更好的為項(xiàng)目選型。

  什么是JavaScript?

  JavaScript是世界上最流行的編程語言之一。

  讓我們從頭講起。自90年代以來,JavaScript一直是網(wǎng)絡(luò)應(yīng)用的核心技術(shù)。它用來與HTML和CSS結(jié)合創(chuàng)建交互式網(wǎng)頁。它是一種具有動(dòng)態(tài)類型和JIT(Just-in-Time)編譯器的高級(jí)語言。

  JavaScript是一種多范式語言,支持各種編程風(fēng)格,如函數(shù)式編程、命令式編程和事件驅(qū)動(dòng)式編程。它還支持編寫服務(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 是一種開源編程語言,具有許多特性,如繼承、類、可見性范圍、命名空間、接口、合并和其他現(xiàn)代特性以及靜態(tài)和動(dòng)態(tài)類型。它支持注釋、變量、函數(shù)、語句、模塊和表達(dá)式。

  作為一種強(qiáng)類型的編程語言,TypeScript調(diào)試(在編譯過程中)更容易,所以更適用于復(fù)雜應(yīng)用。

  為什么會(huì)出現(xiàn) TypeScript?

  JavaScript項(xiàng)目的復(fù)雜性呈指數(shù)級(jí)地增長(zhǎng)。最初,JavaScript只被用作客戶端語言。但開發(fā)人員慢慢意識(shí)到,它也可以作為一種服務(wù)器端的編程語言。

  盡管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來解決這些并不實(shí)際。所以TypeScript應(yīng)運(yùn)而生。

  JavaScript 和 TypeScript 之間的主要區(qū)別 

JavaScript

TypeScript

支持動(dòng)態(tài)網(wǎng)頁內(nèi)容

為幫助項(xiàng)目解決代碼復(fù)雜性而創(chuàng)建的JavaScript超集

解釋性語言,因此只有在運(yùn)行時(shí)才會(huì)發(fā)現(xiàn)錯(cuò)誤

在編譯期間可以檢測(cè)和修復(fù)錯(cuò)誤

弱類型,無法選擇靜態(tài)類型

強(qiáng)類型,支持靜態(tài)和動(dòng)態(tà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í)

無需設(shè)置構(gòu)建環(huán)境

對(duì)于靜態(tài)類型定義,需要適當(dāng)?shù)貥?gòu)建設(shè)置(npm 包)

  TypeScript 比 JavaScript 更好嗎?

  根據(jù)我的描述,TypeScript似乎只是JS的一個(gè)更好的版本。所以你可能會(huì)認(rèn)為TS會(huì)在不久的將來取代JavaScript。其實(shí)不然,我仍然相信JavaScript會(huì)有用武之地。

  復(fù)雜性是一個(gè)需要考慮的關(guān)鍵因素。

  JavaScript 非常適合更簡(jiǎn)單的應(yīng)用程序,因?yàn)樗梢栽谒衅脚_(tái)(跨平臺(tái))上運(yùn)行并且非常輕量級(jí)。另外,與JS的最小開銷相比,編譯TS代碼需要的時(shí)間和CPU資源對(duì)項(xiàng)目而言會(huì)更麻煩。

  與JavaScript相比,TypeScript有很多好處。

  TS 使代碼重構(gòu)變得更加容易,并且更強(qiáng)調(diào)顯式類型,使開發(fā)人員能夠掌握各種組件的交互方式。由于它支持編譯時(shí)調(diào)試,對(duì)于處理大型復(fù)雜應(yīng)用程序的團(tuán)隊(duì)來說,有一定的好處。

  為任何項(xiàng)目設(shè)置TypeScript都是容易的。一些框架,如Angular,默認(rèn)使用TypeScript。因此,在我看來TypeScript更勝一籌。

  TypeScript 的缺點(diǎn)

  盡管TypeScript有許多優(yōu)點(diǎn),但它也有某些缺點(diǎn)。

  需要準(zhǔn)確的定義類型,在使用的時(shí)候是比較麻煩的,但從長(zhǎng)遠(yuǎn)來看,可以節(jié)省時(shí)間和資源。這是選擇JavaScript的最常用的理由。

  你不可能把一個(gè)大型的JavaScript項(xiàng)目遷移到嚴(yán)格的TypeScript上。雖然有一些工具可以協(xié)助,但你還是需要自己遷移大部分的代碼。

  TypeScript代碼編譯需要時(shí)間和CPU資源,所以需要等待一會(huì)才能看到改變。與傳統(tǒng)的JavaScript不同,實(shí)時(shí)編碼會(huì)有一點(diǎn)影響。在海量代碼庫上,這些工具也會(huì)顯著減慢,導(dǎo)致導(dǎo)航等顯著延遲。

  什么時(shí)候應(yīng)該將項(xiàng)目遷移到TypeScript?

  當(dāng)代碼的大小、復(fù)雜性和出錯(cuò)率增加時(shí),需要在編譯過程中確定具體問題時(shí),就可以使用TypeScript。

  TypeScript 還具有接口和訪問修飾符,允許開發(fā)人員在單個(gè)代碼庫上進(jìn)行協(xié)作和交互。因此,最好在項(xiàng)目一開始就使用TypeScript。

  但是你如果喜歡像Ember.js或Glimmer.js這樣的框架,那你就不會(huì)喜歡TypeScript,這些框架的首選是JavaScript。

  結(jié)論

  由于 TypeScript 轉(zhuǎn)換為普通的 JavaScript 代碼,因此你可以將其用作 JavaScript 的替代品。這就是為什么它更容易被接受。當(dāng)然我們也能看到TS被集成到流行的JS框架的核心構(gòu)建組件和庫中,如Angular、React和Vue.js。

  就個(gè)人而言,我是TypeScript的粉絲,通常建議新項(xiàng)目使用它。在開始的時(shí)候多花點(diǎn)心思,就省得以后頭疼了。

  我希望這篇文章能夠幫助你更好地理解這兩種腳本語言之間的差異。至少,你已經(jīng)對(duì)TypeScript到底是什么有了更好的了解?,F(xiàn)在你可以為你的下一個(gè)項(xiàng)目作出更明智的選擇了。

  譯者介紹

  翟珂,51CTO社區(qū)編輯,目前在杭州從事軟件研發(fā)工作,做過電商、征信等方面的系統(tǒng),享受分享知識(shí)的過程,充實(shí)自己的生活。

  原文標(biāo)題:Still pretending you know the differences between JavaScript and Typescript?

??  https://thenextweb.com/news/differences-between-javascript-and-typescript??

責(zé)任編輯:張潔
相關(guān)推薦

2024-05-10 08:41:05

NPMYarn

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2021-01-22 10:27:28

人工智能機(jī)器學(xué)習(xí)技術(shù)

2022-05-06 09:21:21

TypeScriptinterfacetype

2017-09-18 17:00:02

前端URLURN

2019-11-06 09:52:01

JavaScript單線程非阻塞

2017-08-08 14:54:54

機(jī)器學(xué)習(xí)模型參數(shù)超參數(shù)

2024-01-01 08:25:53

ViewSurface框架

2022-09-28 18:16:34

JavaJDK

2021-02-19 07:59:21

數(shù)據(jù)埋點(diǎn)數(shù)據(jù)分析大數(shù)據(jù)

2023-06-01 08:15:04

CentOS紅帽

2020-09-03 06:42:12

線程安全CPU

2023-04-28 07:49:13

Javawaitsleep

2023-12-29 22:41:12

同步架構(gòu)業(yè)務(wù)

2019-07-24 10:11:51

jdkjreJava

2024-10-16 17:10:41

2022-03-10 08:25:27

JavaScrip變量作用域

2022-04-26 09:01:45

運(yùn)算符TypeScript代碼

2021-12-09 17:21:48

TypeScript TS 前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)