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

如何將JavaScript程序移植到TypeScript?

譯文
開發(fā) 前端
JavaScript最初于1995年發(fā)布,經(jīng)歷短短的發(fā)展階段后,已成為許多網(wǎng)站和應(yīng)用程序不可或缺的一部分。如今,JavaScript在客戶端應(yīng)用程序和服務(wù)器端應(yīng)用程序中都占有一席之地。盡管這些年來JavaScript發(fā)生了許多變化,但開發(fā)人員仍然需要眾多特性。

譯者 | 布加迪

審校 | 重樓

JavaScript最初于1995年發(fā)布,經(jīng)歷短短的發(fā)展階段后,已成為許多網(wǎng)站和應(yīng)用程序不可或缺的一部分。如今,JavaScript在客戶端應(yīng)用程序和服務(wù)器端應(yīng)用程序中都有一席之地。盡管這些年來JavaScript發(fā)生了許多變化,但開發(fā)人員仍然需要眾多特性。

TypeScript是一種擴(kuò)展JavaScript的腳本語言,提供了許多期待已久的特性。類型注釋、自定義類型和接口都是主要組件,還有提高生產(chǎn)力的更好工具。

為什么要轉(zhuǎn)換?

面對(duì)重大項(xiàng)目,轉(zhuǎn)換語言可能會(huì)帶來壓力。對(duì)考慮這項(xiàng)任務(wù)的任何人來說值得慶幸的是,將一個(gè)項(xiàng)目從JavaScript移植到TypeScript的過程卻很簡單。

作為一種主要的編程語言,JavaScript在過去幾年越來越受歡迎。最初只用于網(wǎng)站的前端腳本,Node.js的發(fā)布JavaScript引入到服務(wù)器端,幫助提升了人氣。

雖然JavaScript最近變得越來越流行,但最新發(fā)現(xiàn)ES6依然缺少很多特性。對(duì)于許多開發(fā)人員來說,這些缺的特性限制了JavaScript種語言的有用性。

TypeScript旨在糾正這些問題,為此用額外的特性包裝JavaScript,然后轉(zhuǎn)譯用戶代碼。一種具有JavaScript易用性和可用性的類型安全語言由此誕生。

目前經(jīng)有幾個(gè)工具和框架對(duì)TypeScript提供全面支持。長期以來,Angular一直使用TypeScript,連React也有實(shí)現(xiàn)TypeScript的方法。

TypeScript就像JavaScript增強(qiáng)版

TypeScript實(shí)現(xiàn)了開發(fā)人員經(jīng)常對(duì)JavaScript請(qǐng)求的許多特性。TypeScript以它實(shí)現(xiàn)的完整類型系統(tǒng)命名,包括類型檢查、安全性和隱式類型等特性。TypeScript甚至允許定義和使用自定義命名空間。

TypeScript還包含接口、枚舉和類型推斷。TypeScript保留了對(duì)來自最新JavaScript實(shí)現(xiàn)特性以及舊特性的支持,添加了一套新特性。

總的來說,TypeScript致力于創(chuàng)建一個(gè)更安全的開發(fā)過程,輔以更強(qiáng)大的工具以幫助碼農(nóng)

它鼓勵(lì)使用類型安全的代碼

TypeScript使用內(nèi)置的類型檢查系統(tǒng)來驗(yàn)證變量類型。它包括一組標(biāo)準(zhǔn)類型,可以選擇定義自己的類和類型。可以顯式聲明類型,也可以根據(jù)賦值推斷類型。

TypeScript有幾種標(biāo)準(zhǔn)的數(shù)據(jù)類型,包括字符串、數(shù)字、布爾值和元組。還有變量類型,比如unknownany,它們?cè)试S您使用弱類型代碼。

TypeScript的類型推斷允許通過TypeScript的轉(zhuǎn)譯器處理標(biāo)準(zhǔn)JavaScript代碼,對(duì)這類代碼甚至執(zhí)行類型檢查。

轉(zhuǎn)譯使它易于使用

從開發(fā)人員的角度來看,TypeScript最好的特性之一就是它輸出的是常規(guī)的JavaScript。您可以通過名為轉(zhuǎn)譯的過程來運(yùn)行TypeScript代碼,這個(gè)過程類似編譯。

轉(zhuǎn)譯的結(jié)果不是可執(zhí)行文件,而是使用代碼原始語言以外的語言編寫的腳本。

TypeScript代碼被轉(zhuǎn)譯成JavaScript,然后可以在服務(wù)器或客戶端上運(yùn)行。這使您可以快速輕松地編寫幾乎可以在任何平臺(tái)上運(yùn)行的代碼。

TypeScript幫助開發(fā)人員提高生產(chǎn)力

JavaScript添加類型不僅允許代碼安全運(yùn)行,還為開發(fā)人員提供了簡化編碼的工具。大多數(shù)現(xiàn)代IDE都提供TypeScript支持,允許像IntelliSense這樣的代碼補(bǔ)全工具為代碼提供額外上下文。它還可以在時(shí)提供類型檢查功能,幫助您更迅速揪出錯(cuò)誤。

此外,TypeScript額外的數(shù)據(jù)結(jié)構(gòu)和語法旨在提高代碼的可讀性。這些特性使用戶更快速更輕松地創(chuàng)建高質(zhì)量代碼,并及早發(fā)現(xiàn)潛在問題。

如何移植代碼?

如果您在開始著手全新的項(xiàng)目,創(chuàng)建新的TypeScript項(xiàng)目相當(dāng)簡單。然而,將一個(gè)已的項(xiàng)目轉(zhuǎn)換TypeScript就有點(diǎn)復(fù)雜了。

在大多數(shù)正常情況下,將一個(gè)項(xiàng)目從一種語言轉(zhuǎn)換成另一種語言可能令人望而生畏。然而,JavaScript轉(zhuǎn)換成TypeScript異常簡單。

TypeScript作為JavaScript的超集

TypeScript被認(rèn)為是JavaScript的超集。這意味著TypeScript添加了額外的語法和功能,沒有改變或刪除其底層的核心功能。

對(duì)于開發(fā)人員來說,這意味著任何在JavaScript中正常運(yùn)行的代碼都會(huì)自動(dòng)在TypeScript中正確運(yùn)行。不管這個(gè)腳本是用NodeJS編寫的Web服務(wù)器,還是一組用于網(wǎng)頁的前端腳本,轉(zhuǎn)換過程都非常簡單。

在安裝TypeScript轉(zhuǎn)譯器之后,您可以創(chuàng)建一個(gè)簡單的tsconfig.json文件,內(nèi)容如下

{
 "compilerOptions": {
 "outDir": "./build",
 "allowJs": true,
 "target": "es5"
 },
 "include": ["./src/**/*"]
}

所有適用的文件移到src目錄并運(yùn)行轉(zhuǎn)譯器。這將在build目錄中創(chuàng)建生成JavaScript文件。

這些快速而簡單的改變可將標(biāo)準(zhǔn)的JavaScript項(xiàng)目轉(zhuǎn)換TypeScript項(xiàng)目。此后,可以隨意使用TypeScript提供的新特性,可以在變量上標(biāo)注類型、實(shí)現(xiàn)自定義類型和定義接口。

在每次轉(zhuǎn)譯之后,您可以根據(jù)需要使用來自build目錄的輸出,只需將文件添加到任何項(xiàng)目中。轉(zhuǎn)譯器將對(duì)標(biāo)準(zhǔn)JavaScript進(jìn)行類型檢查,并將新特性轉(zhuǎn)換有效的ES5腳本。

從JS轉(zhuǎn)換成TS,您需要知道什么?

將一個(gè)項(xiàng)目從JavaScript轉(zhuǎn)換TypeScript的過程非常簡單。轉(zhuǎn)換就像切換目錄結(jié)構(gòu)、添加配置文件和安裝轉(zhuǎn)譯器一樣簡單。

然而,從新語言中獲得所有好處可能是更漫長的項(xiàng)目。雖然TypeScript可以推斷出項(xiàng)目中每個(gè)變量的類型,但它們應(yīng)該被顯式聲明?;仡?/span>一番,為項(xiàng)目添加自定義類型、添加適當(dāng)?shù)淖⑨尯蛣?chuàng)建接口,這可能非常耗時(shí)。

然而,這些特性添加到項(xiàng)目將便于您獲得適當(dāng)?shù)念愋蜋z查和擴(kuò)展工具帶來的好處。大型項(xiàng)目構(gòu)建起來將更快速輕松,您可以更早識(shí)別錯(cuò)誤,新開發(fā)人員將更容易閱讀您的代碼。

原文標(biāo)題:How to Port Your JavaScript Program to TypeScript,作者:Seth M. Thomas

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2011-05-04 09:29:22

2009-10-10 13:54:20

OPhone

2012-06-19 10:22:16

Windows Pho

2012-06-20 11:17:02

MemSQL

2011-04-13 11:11:36

VC++托盤程序

2012-08-17 11:04:57

IBMdW

2011-01-13 14:19:41

solarisLinux

2015-05-05 13:57:12

AndroidWindows

2022-11-25 16:27:07

應(yīng)用開發(fā)鴻蒙

2020-11-18 09:29:06

NginxHTTPHTTPS

2015-03-18 10:29:01

私有云混合云云API

2020-11-10 08:00:00

機(jī)器學(xué)習(xí)技術(shù)科學(xué)

2022-04-06 11:33:43

Linux桌面GNOME 42

2015-09-07 17:45:04

升級(jí)UbuntuLinux

2023-11-11 19:07:23

SilverblueLinux

2025-02-17 08:00:00

機(jī)器學(xué)習(xí)開發(fā)Docker

2011-10-09 12:59:54

DtraceLinux甲骨文

2017-09-30 16:18:00

HTML5代碼對(duì)象

2020-03-10 22:01:54

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2021-11-15 10:20:50

Ubuntu22.04 LTS JLinux
點(diǎn)贊
收藏

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