目錄
TypeScript 泛型 (Generics) 的基本用法
TypeScript 泛型(Generics)是一種強大的工具,可以讓你在不指定任何類型的情況下,對函式、類別或介面進行定義。它能夠增加程式碼的重用性和靈活性,使你能夠在執行時指定具體的類型。本文將介紹 TypeScript 泛型的基本用法、實作範例、錯誤排除及延伸應用,幫助你在 2025 年的程式開發中掌握這一重要概念。
泛型的基本概念
使用 TypeScript 泛型,開發者可以在函式、類別或介面中指定一個或多個變數,這些變數可以在執行時被指定具體的類型。這樣,你就可以創建靈活且可重用的程式碼。
實作範例
以下是一個使用泛型的函式範例,該函式接受任何類型的參數,並將其值加一:
function addOne<T extends number | string>(x: T): T {
return (Number(x) + 1) as T;
}
在上述程式碼中,我們定義了一個名為 addOne
的函式,它接受一個變數 x
,該變數的類型由泛型 T
指定。這裡我們使用了 <T extends number | string> 來限制 T
的類型為數字或字串。
接下來,我們可以使用該函式來對不同類型的參數進行加一操作:
let a = addOne<number>(1); // a 的值為 2
let b = addOne<string>('1'); // b 的值為 '2'
錯誤排除
在使用泛型時,可能會遇到一些常見的錯誤,例如:
- 類型不匹配:確保在調用泛型函式時,傳入的參數類型與指定的類型相符。
- 無法將類型轉換:使用
as
進行類型轉換時,請確認轉換的合理性,避免運行時錯誤。
延伸應用
泛型不僅可以用於函式,還可以用於類別和介面。例如,你可以使用泛型來定義一個通用的資料結構:
class Box<T> {
private value: T;
constructor(value: T) {
this.value = value;
}
getValue(): T {
return this.value;
}
}
這段程式碼定義了一個名為 Box
的泛型類別,能夠存儲任意類型的值,並提供方法來獲取該值。
結論
掌握 TypeScript 泛型的使用,可以讓你的程式碼更加靈活且易於維護。透過本文的介紹,相信你已經對泛型有了更深入的理解,並能夠在實際開發中運用這一強大工具。
Q&A(常見問題解答)
1. TypeScript 泛型有什麼優勢?
泛型提供了型別安全性,讓你在編譯期間捕捉到潛在的型別錯誤,並提高程式碼的重用性。
2. 如何在類別中使用泛型?
你可以在類別定義中使用泛型,像是 class Box<T>
,以便創建可處理不同類型資料的通用類別。
3. 泛型能否與其他 TypeScript 特性一起使用?
是的,泛型可以與介面、類型別名、條件類型等其他 TypeScript 特性一起使用,以創建更強大的型別系統。
—