
- TypeScript 基礎
- TypeScript - 首頁
- TypeScript - 路線圖
- TypeScript - 概述
- TypeScript - 環境搭建
- TypeScript - 基本語法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 變數
- TypeScript - let & const
- TypeScript - 運算子
- TypeScript 基本型別
- TypeScript - 型別
- TypeScript - 型別註解
- TypeScript - 型別推斷
- TypeScript - 數字
- TypeScript - 字串
- TypeScript - 布林值
- TypeScript - 陣列
- TypeScript - 元組
- TypeScript - 列舉
- TypeScript - any
- TypeScript - never
- TypeScript - 聯合型別
- TypeScript - 字面量型別
- TypeScript - 符號
- TypeScript - null vs. undefined
- TypeScript - 類型別名
- TypeScript 控制流
- TypeScript - 決策
- TypeScript - if 語句
- TypeScript - if else 語句
- TypeScript - 巢狀 if 語句
- TypeScript - switch 語句
- TypeScript - 迴圈
- TypeScript - for 迴圈
- TypeScript - while 迴圈
- TypeScript - do while 迴圈
- TypeScript 函式
- TypeScript - 函式
- TypeScript - 函式型別
- TypeScript - 可選引數
- TypeScript - 預設引數
- TypeScript - 匿名函式
- TypeScript - 函式構造器
- TypeScript - rest 引數
- TypeScript - 引數解構
- TypeScript - 箭頭函式
- TypeScript 介面
- TypeScript - 介面
- TypeScript - 介面擴充套件
- TypeScript 類和物件
- TypeScript - 類
- TypeScript - 物件
- TypeScript - 訪問修飾符
- TypeScript - 只讀屬性
- TypeScript - 繼承
- TypeScript - 靜態方法和屬性
- TypeScript - 抽象類
- TypeScript - 存取器
- TypeScript - 鴨子型別
- TypeScript 高階型別
- TypeScript - 交叉型別
- TypeScript - 型別保護
- TypeScript - 型別斷言
- TypeScript 型別操作
- TypeScript - 從型別建立型別
- TypeScript - Keyof 型別運算子
- TypeScript - Typeof 型別運算子
- TypeScript - 索引訪問型別
- TypeScript - 條件型別
- TypeScript - 對映型別
- TypeScript - 模板字面量型別
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型約束
- TypeScript - 泛型介面
- TypeScript - 泛型類
- TypeScript 其他
- TypeScript - 三斜槓指令
- TypeScript - 名稱空間
- TypeScript - 模組
- TypeScript - 環境宣告
- TypeScript - 裝飾器
- TypeScript - 型別相容性
- TypeScript - 日期物件
- TypeScript - 迭代器和生成器
- TypeScript - Mixin
- TypeScript - 實用程式型別
- TypeScript - 裝箱和拆箱
- TypeScript - tsconfig.json
- 從 JavaScript 到 TypeScript
- TypeScript 有用資源
- TypeScript - 快速指南
- TypeScript - 有用資源
- TypeScript - 討論
TypeScript - let & const
TypeScript宣告變數的規則與JavaScript相同。最初,只使用'var'關鍵字宣告變數,但在JavaScript的ES6版本中引入了'let'和'const'關鍵字來宣告變數。因此,你也可以在TypeScript中使用它們。
在本課中,你將學習如何使用'let'和'const'關鍵字宣告變數,以及這些變數與使用'var'關鍵字宣告的變數有何不同。
使用let關鍵字宣告變數
當我們在TypeScript中使用'let'關鍵字宣告變數時,作用域規則和提升規則與JavaScript中的相同。
語法
在TypeScript中使用'let'關鍵字宣告變數的語法如下:
let var_name: var_type = value;
在上例語法中,'let'是一個關鍵字。
'var_name'是變數名的有效識別符號。
'var_type'是變數的型別。
'value'是要儲存在變數中的值。
示例
在下面的程式碼中,我們定義了字串型別的'car_name'變數,它包含“Brezza”值。'car_price'變數包含數字值1000000。
// Define a variable in TypeScript let car_name: string = "Brezza"; let car_price: number = 1000000; console.log(car_name); console.log(car_price);
編譯後,它將生成以下JavaScript程式碼。
// Define a variable in TypeScript let car_name = "Brezza"; let car_price = 1000000; console.log(car_name); console.log(car_price);
輸出
上述示例程式碼的輸出如下:
Brezza 1000000
變數作用域
使用'let'關鍵字宣告的變數具有塊級作用域。這意味著你無法像使用'var'關鍵字宣告的變數那樣訪問塊外的變數。
讓我們透過下面的例子來學習。
在下面的程式碼中,'bool'變數包含true值,因此'if'語句的程式碼將始終執行。在'if'塊中,我們聲明瞭'result'變數,只能在'if'塊內訪問它。如果你嘗試在'if'塊外訪問它,TypeScript編譯器將丟擲錯誤。
let bool: boolean = true; if (bool) { let result: number = 10; console.log(result); // It can have accessed only in this block } // console.log(result); Can't access variable outside of the block.
let變數不能重新宣告
你不能重新宣告使用'let'關鍵字宣告的變數。
讓我們看看下面的例子。
在下面的程式碼中,你可以看到,如果我們嘗試重新宣告相同的變數,TypeScript編譯器將丟擲錯誤。
let animal: string = "cat"; // let animal: string = "dog"; // Error: Cannot redeclare block-scoped variable 'animal' console.log(animal); // Output: cat
編譯後,它將生成以下JavaScript程式碼。
let animal = "cat"; // let animal: string = "dog"; // Error: Cannot redeclare block-scoped variable 'animal' console.log(animal); // Output: cat
上述示例程式碼的輸出如下:
cat
不同塊中具有相同名稱的變數
使用'let'關鍵字宣告的變數具有塊級作用域。因此,如果具有相同名稱的變數位於不同的塊中,則它們被視為不同的變數。
讓我們看看下面的例子。
在下面的程式碼中,我們在'if'和'else'兩個塊中聲明瞭'num'變數,並用不同的值初始化它們。
let bool: boolean = false; // If the boolean is true, the variable num will be 1, otherwise it will be 2 if (bool) { let num: number = 1; console.log(num); } else { let num: number = 2; console.log(num); }
編譯後,它將生成以下JavaScript程式碼。
let bool = false; // If the boolean is true, the variable num will be 1, otherwise it will be 2 if (bool) { let num = 1; console.log(num); } else { let num = 2; console.log(num); }
上述示例程式碼的輸出如下:
2
使用'const'關鍵字宣告變數
'const'關鍵字與'var'和'let'具有相同的語法來宣告變數。它用於宣告常量變數。此外,你需要在定義'const'變數時初始化它們,並且以後不能更改它們。
語法
在TypeScript中使用'const'關鍵字宣告變數的語法如下:
const var_name: var_type = value;
在上例語法中,'const'是一個關鍵字。
示例
在下面的程式碼中,我們使用'const'關鍵字定義了'lang'和'PI'變數,它們分別包含'TypeScript'和'3.14'值。
// Define a constant variable in TypeScript const lang: string = 'TypeScript'; const PI: number = 3.14; console.log(`Language: ${lang}`); console.log(`Value of PI: ${PI}`);
編譯後,它將生成以下JavaScript程式碼。
// Define a constant variable in TypeScript const lang = 'TypeScript'; const PI = 3.14; console.log(`Language: ${lang}`); console.log(`Value of PI: ${PI}`);
上述示例程式碼的輸出如下:
Language: TypeScript Value of PI: 3.14
使用'const'關鍵字宣告的變數在作用域和重新宣告方面與使用'let'關鍵字宣告的變數具有相同的規則。
在下面的程式碼中,你可以看到,如果你嘗試在相同的作用域中重新宣告'const'變數,或者嘗試在聲明後更改它的值,它都會丟擲錯誤。
if (true) { const PI: number = 3.14; console.log(PI); // const PI: number = 3.14; Error: Cannot redeclare block-scoped variable 'PI'. // PI = 3.15; Error: Cannot assign to 'PI' because it is a constant. }
編譯後,它將生成以下JavaScript程式碼。
if (true) { const PI = 3.14; console.log(PI); // const PI: number = 3.14; Error: Cannot redeclare block-scoped variable 'PI'. // PI = 3.15; Error: Cannot assign to 'PI' because it is a constant. }
上述示例程式碼的輸出如下:
3.14
你學習瞭如何使用'let'和'const'語句宣告變數。由於其塊級作用域特性,避免了在不同作用域中宣告的變數的值被覆蓋,因此始終建議使用'let'關鍵字宣告變數。