TypeScript 泛型 (Generics) 是一種強大的工具,允許開發者在不改變原有程式碼的情況下擴展和改變程式碼。透過泛型類,開發者可以定義一個可接受多種資料類型的類別或函式,進而提高程式碼的靈活性與可重用性。
目錄
TypeScript 泛型類的基本概念
泛型類的基本概念在於它可以接受任何類型的資料,這樣即使在函式中使用不同的資料類型,也不必重複撰寫程式碼。以下是如何定義一個簡單的泛型函式:
function myFunction<T>(arg: T): T {
return arg;
}
在這個範例中,<T> 代表一個泛型參數,可以被任何資料型別所替代。這意味著你可以這樣使用它:
let numberResult = myFunction(42); // 傳入數字
let stringResult = myFunction("Hello, TypeScript!"); // 傳入字串
進階用法:泛型約束
除了基本的泛型類型,TypeScript 還支援泛型約束,這可以讓你限制泛型參數的類型。以下是一個範例:
interface Lengthwise {
length: number;
}
function logLength<T extends Lengthwise>(arg: T): void {
console.log(arg.length);
}
logLength([1, 2, 3]); // 陣列
logLength("Hello"); // 字串
在這個範例中,<T extends Lengthwise> 限制了 T 必須是一個具有 length 屬性的類型,這樣可以確保傳入的資料具有可計算長度的能力。
錯誤排除與最佳實踐
在使用泛型時,開發者可能會遇到一些常見錯誤,例如:
- 類型不匹配:確保傳入的資料符合泛型的約束。
- 過度使用泛型:不必要的泛型會使程式碼變得複雜,使用時請考慮是否真的需要。
延伸應用
泛型不僅限於函式,也可以用於類別和介面。這樣,你可以創建可重用的資料結構,讓程式碼更加靈活。
總結
TypeScript 泛型類是一種強大的工具,通過允許開發者在不改變原有程式碼的情況下進行擴展,能夠顯著提升開發效率。掌握泛型的使用將使你的程式碼更具可讀性與可重用性。
Q&A(常見問題解答)
1. 泛型與普通類型有什麼區別?
泛型允許在函式或類別中使用多種資料型別,而普通類型則僅限於單一型別。
2. 在什麼情況下應該使用泛型?
當你需要撰寫能處理多種資料型別的函式或類別時,使用泛型是非常合適的。
3. 如何處理泛型的錯誤?
檢查泛型約束的定義,確保傳入的資料符合預期的類型要求,並避免不必要的泛型使用。
—