TypeScript基礎--泛型
泛型的意義:在軟體工程中,我們不僅要建立一致的定義良好的API,同時也要考慮吧可重用性。元件不僅能夠支援當前的資料型別,同時也要支援未來的資料型別。
TypeScript的泛型示例:
- 泛型定義
function identity<T>(arg: T): T {
return arg;
}
- 泛型介面示例
interface GenericIdentityFn<T> {
(arg: T): T;
}
function identity<T>(arg: T): T {
return arg;
}
let myIdentity: GenericIdentityFn<number> = identity;
- 泛型類示例
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };
泛型約束
function loggingIdentity<T>(arg: T): T {
console.log(arg.length); // Error: T doesn't have .length
return arg;
}
上面這個例子中,編譯器會直接報錯。原因很簡單,實際在確定泛型型別的時候,我們並不能保證每種資料型別都有length
屬性。
前面學習過,TypeScript介面可以用來表示契約(約束),所有我們可以修改為如下方式:
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length); // Now we know it has a .length property, so no more error
return arg;
}
正確的呼叫方式如下:
loggingIdentity({ length: 10, value: 3 });
loggingIdentity("12345");
相關文章
- TypeScript 泛型型別TypeScript泛型型別
- TypeScript 泛型介面和泛型類TypeScript泛型
- java 基礎 泛型Java泛型
- Java基礎-泛型Java泛型
- JavaSE基礎:泛型Java泛型
- 【Java基礎】泛型Java泛型
- TypeScript 泛型相容TypeScript泛型
- TypeScript 泛型限定TypeScript泛型
- TypeScript 工具泛型TypeScript泛型
- TypeScript(3)基礎型別TypeScript型別
- typeScript 基礎型別 (三)TypeScript型別
- Go泛型基礎使用Go泛型
- java-基礎-泛型Java泛型
- Java基礎-泛型詳解Java泛型
- 【Java反射】Java 泛型基礎Java反射泛型
- java基礎複習-----泛型Java泛型
- Java基礎之泛型方法Java泛型
- TypeScript型別系統和基礎型別TypeScript型別
- corejava基礎知識(3)-泛型Java泛型
- C#基礎:泛型委託C#泛型
- Java基礎——深入理解泛型Java泛型
- Java基礎之淺談泛型Java泛型
- TypeScript 基本型別和泛型的使用TypeScript型別泛型
- JAVA基礎之九-泛型(通用型別)Java泛型型別
- TypeScript 中的非基礎型別宣告TypeScript型別
- Java 基礎 一文搞懂泛型Java泛型
- java入門基礎學習----泛型Java泛型
- java基礎學習之十三:泛型Java泛型
- TypeScript學習(四)—— 介面和泛型TypeScript泛型
- TypeScript (基礎)TypeScript
- TypeScript基礎TypeScript
- 系統學習 TypeScript(三)——基礎型別TypeScript型別
- Java基礎知識掃盲(四)——泛型Java泛型
- 一個小栗子聊聊 JAVA 泛型基礎Java泛型
- C#基礎:泛型的理解和使用C#泛型
- 為vue3學點typescript, 泛型VueTypeScript泛型
- Java中泛型的基礎到提高《精簡》Java泛型
- 基礎篇:深入解析JAVA泛型和Type型別體系Java泛型型別