TypeScript編譯工作原理?
近年來,流行的程式語言TypeScript已被廣大開發者廣泛採用。它是JavaScript的超集,透過靜態型別和其他特性增強了語言功能,使複雜應用程式的開發更簡單,更不容易出錯。但是,TypeScript程式碼必須編譯成JavaScript,因為它不能直接在瀏覽器或伺服器上執行。任何使用TypeScript的開發者都必須理解TypeScript編譯的工作原理。
TypeScript編譯過程包含多個步驟,包括解析、型別檢查、輸出JavaScript、捆綁和執行。在解析階段,TypeScript編譯器會解析程式碼並建立一個程式碼的抽象語法樹模型。在型別檢查階段,會檢查程式碼以確定變數、函式和表示式的型別,並查詢型別錯誤。然後,編譯器將TypeScript程式碼轉換成JavaScript程式碼,可以使用Webpack或Rollup之類的程式進行打包。最後,就像其他JavaScript程式碼一樣,包中的程式碼在瀏覽器或伺服器上執行。
使用者可以透過多種方法編譯TypeScript程式碼,例如使用TypeScript編譯器命令列介面(CLI)、構建工具或支援TypeScript的程式碼編輯器。理解TypeScript編譯的工作原理是理解這門語言的關鍵部分。由於其強大的功能和簡易性,開發人員在建立複雜應用程式時經常選擇TypeScript。
TypeScript編譯步驟
TypeScript是JavaScript的超集,它為該語言添加了靜態型別等功能。為了在瀏覽器或伺服器上執行,TypeScript程式碼必須轉換為JavaScript。
TypeScript編譯過程如下:
解析 - TypeScript編譯器解析程式碼,並建立一個其抽象語法樹(AST)模型。
型別檢查 - 編譯器檢查程式碼以確定變數、函式和表示式的型別。此外,它還會查詢型別錯誤,例如將文字賦給持有數字的變數。
生成JavaScript - 型別檢查TypeScript程式碼後,編譯器會生成JavaScript程式碼。生成的JavaScript程式碼中已刪除型別註釋,其他TypeScript特定功能已轉換為JavaScript等效項。生成的JavaScript程式碼等效於原始TypeScript程式碼。
捆綁 - 為減少HTTP請求併為生成的JavaScript程式碼做好生產準備,可以使用Webpack或Rollup之類的程式打包程式碼。
執行 - 然後,打包後的JavaScript程式碼像任何其他JavaScript程式碼一樣在瀏覽器或伺服器上執行。
編譯TypeScript的兩種方法是使用TypeScript編譯器命令列介面(CLI)和具有整合TypeScript支援的構建工具。
示例
在這個例子中,我們將使用TypeScript來乘以兩個數字。我們首先建立typescript檔案並宣告帶有各自型別的變數,然後宣告一個函式,該函式將乘以兩個數字並在控制檯中給出答案。然後編譯typescript程式碼,我們將獲得可以在瀏覽器中輕鬆執行的javascript程式碼。
let number1: number = 10 let number2: number = 20 function multiply(num1: number, num2: number) { let ans: number = num1 * num2 return ans } let answer = multiply(number1, number2) console.log(answer)
編譯後,它將生成以下JavaScript程式碼:
var number1 = 10; var number2 = 20; function multiply(num1, num2) { var ans = num1 * num2; return ans; } var answer = multiply(number1, number2); console.log(answer);
示例2
在這個例子中,我們將使用TypeScript並將其編譯成JavaScript程式碼。我們正在獲取一個物件陣列,迴圈遍歷它們,並逐個列印每個值。首先,我們宣告變數及其型別。然後,我們宣告一個for迴圈,並透過陣列迴圈並控制檯記錄陣列的每個專案。
let arr: { name: String; email: String }[] = [ { name: 'ABC', email: 'abc@abc.com', },{ name: 'XYZ', email: 'xyz@xyz.com', },{ name: 'MNO', email: 'mno@mno.com', },{ name: 'PQR', email: 'pqr@pqr.com', }, ] for (let i = 0; i < arr.length; i++) { console.log('Name: ' + arr[i].name + ' Email: ' + arr[i].email) }
編譯後,它將生成以下JavaScript程式碼:
var arr = [ { name: 'ABC', email: 'abc@abc.com' },{ name: 'XYZ', email: 'xyz@xyz.com' },{ name: 'MNO', email: 'mno@mno.com' },{ name: 'PQR', email: 'pqr@pqr.com' }, ]; for (var i = 0; i < arr.length; i++) { console.log('Name: ' + arr[i].name + ' Email: ' + arr[i].email); }