一文了解什麼是TypeScript?
目錄
- 1.的問題
- 2.TypeScript的優勢
- 3.TypeScript的缺點
- 4.TypeScript的執行環境
- 5www.cppcns.com.作用域問題
前言:
TypeScript
是Shttp://www.cppcns.comcript
的超集,它可以編譯成純JavaScript
程式碼。
那為什麼會出現TypeScript
這門語言,主要是因為現在的JavaScript可以開發很多複雜的專案,但是JavaScript又缺乏其可靠性,在使用的時候需要我們為了程式碼的健壯性需要新增很多業務邏輯去判斷。
TypeScript
可以執行在瀏覽器環境、Node.環境或者ECMAScript3
JavaScript
的引擎中。
1.JavaScript的問題
JavaScript的問題主要有如下幾個:
JavaScript
的型別異常只有在執行的時候才可以發現。
因為JavaScript
的函式的型別是不明確的,有可能導致函式的最終功能導致出現問題,
如下這段程式碼:
function sum(x,y){ return x + y } sum(100,'100') // 100100
2.TypeScript的優勢
JavaScript
是動態型別的語言,所謂的動態型別,就是在編譯時候時候才知道其資料型別是Number 還是String;而TypeScript
是靜態型別的程式語言,所謂的靜態型別就是編寫的時候就知道其資料型別是什麼,比例定義一個變數
let num: number = 6;
num
這個變數從頭到尾只能是number
型別,如果將字串賦值給他就會丟擲異常。
所以說,TypeScript的優勢如下:
- 在開發過程中,就可以定位的錯誤的地方,方便我們檢查錯誤。
TypeScript
屬於漸進式的程式語言,如果不懂其語法可以完全將其當做JavaScript
來用。- 減少了我們在開發過程中的不必要的型別檢查。
- 靜態型別的程式碼提示是要優於靜態型別程式碼提示的。
- 在進行專案重構的時候會更加簡單。
- 靜態型別的程式碼語義化比動態型別更好,可讀性更好。
3.TypeScript的缺點
TypeScript
並不是只有優點,沒有缺點的,它的缺點都是相對於JavaScript來說,
具體如下幾點:
- 相對於
JavaScript
來說,TypeScript本身增加了許多的概念。例如泛型、介面等概念。 - 使用TypeScript開發在短期內會增加一些成本,但是對於一個需要長期維護的專案,
TypeScript
能夠減少其維護成本。 - 可能和一些庫結合的不是很完美。
4.TypeScript的執行環境
TypeScript
是執行是建立在Node.js環
境基礎之上的,所以需要先安裝一下Node.js。
安裝Node.js等一系列操作以忽略
安裝TypeScript的命令如下:
npm install -g [email protected]
這裡我通過@指定版本號,也可以不指定版本號
安裝完TypeScript
後,還需要安裝一個ts-node
的工具,如果安裝該工具話是不能直接執行TS程式碼的,需要將TS的程式碼編成JavaScript後才能執行。
執行流程如下:
# 編譯 TS 程式碼 tsc demo.ts # 編譯後會得到 demo.js 檔案,然後就可以運行了
如果安裝了node-ts
工具後,就可以直接執行TS程式碼了。
具體步驟如下:
# 1. 全域性安裝 npm install -g [email protected] # 2. 執行程式碼 ts-node demo.ts
值得注意的是安裝之後的目錄一定需要在環境變數中,不然會報錯的。
5.作用域問題
我們在專案中執行ts檔案時,如果不同檔案中存在相同的變數名是會丟擲異常的 ,
示例程式碼如下:
a.ts let str: string = 'Hello World'
b.ts let str: string = '一碗周'
此時就會丟擲一個異常,即無法重新宣告塊範圍變數“str”,如果編輯器是VScode的話,滑鼠懸停到變數名會進行提示。
解決這個問題的方式有兩種,第一種是為每個檔案建立一個立即執行函式(即匿名函式),保證每個檔案都擁有單獨的作用域。
示例程式碼如下:
(function() { let str: string = '一碗周' }){}
第二種方式是使用export將當前檔案作為模組匯出。示例程式碼如下:
let str: string = '一碗周' export {}
到此這篇關於什麼是TypeScrhttp://www.cppcns.comipt?的文章就介紹到這了,更多相關TypeScript內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!