一文了解什么是TypeScript?
前言:
TypeScript是JavaScript的超集,它可以編譯成純JavaScript代碼。
那為什么會出現TypeScript這門語言,主要是因為現在的JavaScript可以開發(fā)很多復雜的項目,但是JavaScript又缺乏其可靠性,在使用的時候需要我們?yōu)榱舜a的健壯性需要添加很多業(yè)務邏輯去判斷。
TypeScript可以運行在瀏覽器環(huán)境、Node.js環(huán)境或者ECMAScript3或者更高的JavaScript的引擎中。
1.JavaScript的問題
JavaScript的問題主要有如下幾個:
JavaScript的類型異常只有在運行的時候才可以發(fā)現。
因為JavaScript的函數的類型是不明確的,有可能導致函數的最終功能導致出現問題,
如下這段代碼:
function sum(x, y){
return x + y
}
sum(100, '100') // 100100
2.TypeScript的優(yōu)勢
JavaScript是動態(tài)類型的編程語言,所謂的動態(tài)類型,就是在編譯時候時候才知道其數據類型是Number 還是String;而TypeScript是靜態(tài)類型的編程語言,所謂的靜態(tài)類型就是編寫的時候就知道其數據類型是什么,比例定義一個變量
let num: number = 6;
num這個變量從頭到尾只能是number類型,如果將字符串賦值給他就會拋出異常。
所以說,TypeScript的優(yōu)勢如下:
- 在開發(fā)過程中,就可以定位的錯誤的地方,方便我們檢查錯誤。
TypeScript屬于漸進式的編程語言,如果不懂其語法可以完全將其當做JavaScript來用。- 減少了我們在開發(fā)過程中的不必要的類型檢查。
- 靜態(tài)類型的代碼提示是要優(yōu)于靜態(tài)類型代碼提示的。
- 在進行項目重構的時候會更加簡單。
- 靜態(tài)類型的代碼語義化比動態(tài)類型更好,可讀性更好。
3.TypeScript的缺點
TypeScript并不是只有優(yōu)點,沒有缺點的,它的缺點都是相對于JavaScript來說,
具體如下幾點:
- 相對于
JavaScript來說,TypeScript本身增加了許多的概念。例如泛型、接口等概念。 - 使用TypeScript開發(fā)在短期內會增加一些成本,但是對于一個需要長期維護的項目,
TypeScript能夠減少其維護成本。 - 可能和一些庫結合的不是很完美。
4.TypeScript的運行環(huán)境
TypeScript是運行是建立在Node.js環(huán)境基礎之上的,所以需要先安裝一下Node.js。
安裝Node.js等一系列操作以忽略
安裝TypeScript的命令如下:
npm install -g typescript@3.6.4
這里我通過@指定版本號,也可以不指定版本號
安裝完TypeScript后,還需要安裝一個ts-node的工具,如果安裝該工具話是不能直接運行TS代碼的,需要將TS的代碼編成JavaScript后才能執(zhí)行。
執(zhí)行流程如下:
# 編譯 TS 代碼 tsc demo.ts # 編譯后會得到 demo.js 文件,然后就可以運行了
如果安裝了node-ts工具后,就可以直接執(zhí)行TS代碼了。
具體步驟如下:
# 1. 全局安裝 npm install -g ts-node@8.4.1 # 2. 運行代碼 ts-node demo.ts
值得注意的是安裝之后的目錄一定需要在環(huán)境變量中,不然會報錯的。
5.作用域問題
我們在項目中執(zhí)行ts文件時,如果不同文件中存在相同的變量名是會拋出異常的 ,
示例代碼如下:
a.ts let str: string = 'Hello World'
b.ts let str: string = '一碗周'
此時就會拋出一個異常,即無法重新聲明塊范圍變量“str”,如果編輯器是VScode的話,鼠標懸停到變量名會進行提示。
解決這個問題的方式有兩種,第一種是為每個文件創(chuàng)建一個立即執(zhí)行函數(即匿名函數),保證每個文件都擁有單獨的作用域。
示例代碼如下:
(function() {
let str: string = '一碗周'
}){}
第二種方式是使用export將當前文件作為模塊導出。示例代碼如下:
let str: string = '一碗周'
export {}
到此這篇關于什么是TypeScript?的文章就介紹到這了,更多相關TypeScript內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript國際化API格式化數據Intl.NumberFormat使用講解
這篇文章主要為大家介紹了JavaScript國際化API格式化數據Intl.NumberFormat使用講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
TypeScript對象解構操作符在Spartacus實際項目開發(fā)中的應用解析
這篇文章主要為大家介紹了TypeScript對象解構操作符在Spartacus實際項目開發(fā)中的應用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
document 和 document.all 分別什么時候用
document 和 document.all 分別什么時候用...2006-06-06
axios進度條onDownloadProgress函數total參數undefined解決分析
這篇文章主要介紹了axios進度條onDownloadProgress函數total參數undefined解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

