文字類型(Literal Types) | TypeScript

TypeScript 的領域中,有一個強大的功能被稱為 文字類型 ,它使開發人員能夠使用確切的值而不是通用類型。這提供了更強大的類型安全性和更精準的程式碼。

TypeScript 文字類型(Literal Types):

TypeScript 中,文字類型允許開發人員定義確切的值作為類型。你可以指定變量可以具有的確切值,而不是使用字串或數字等類型。這種精確性提高了代碼的準確度,並在開發階段檢測潛在的錯誤。

TypeScript 中有幾種文字,包括字串文字、數字文字、布爾文字,甚至是物件文字。

範例代碼:

// 1. 字串文字類型: 定義僅接受特定字串值的類型。
type Direction = "left" | "right" | "up" | "down";
function move(direction: Direction): void {
    // 實現
}

move("left"); // 正確
move("diagonal"); // 錯誤:類型 '"diagonal"' 的引數不能分配給類型 'Direction' 的參數。

///////////////////////////////////////////////////////////////////////////////////

// 2. 數字文字類型: 指定僅接受特定數值的類型。
type DiceRoll = 1 | 2 | 3 | 4 | 5 | 6;
function rollDice(result: DiceRoll): void {
    // 實現
}

rollDice(3); // 正確
rollDice(7); // 錯誤:類型 '7' 的引數不能分配給類型 'DiceRoll' 的參數。

///////////////////////////////////////////////////////////////////////////////////

// 3. 布爾文字類型: 創建確切布爾值的類型。
type LightSwitch = true | false;
function toggleSwitch(state: LightSwitch): void {
    // 實現
}

toggleSwitch(true); // 正確
toggleSwitch(0); // 錯誤:類型 '0' 的引數不能分配給類型 'LightSwitch' 的參數。

///////////////////////////////////////////////////////////////////////////////////

// TypeScript文字類型可以增強代碼的安全性和表達能力。假設我們想要創建一個接受特定一組顏色的函數:
// 在這個例子中,Color類型確保只有指定的顏色作為applyColor函數的有效參數被接受。這消除了傳遞不正確或意外值的可能性,使代碼更不容易出錯。
type Color = "red" | "green" | "blue";
function applyColor(color: Color): void {
    // 實現
}

applyColor("red"); // 正確
applyColor("yellow"); // 錯誤:類型 '"yellow"' 的引數不能分配給類型 'Color' 的參數。