ts---泛型
泛型:是一种编程语言特性,允许在定义函数、类、接口等时使用占位符来表示类型,而不是具体的类型。
我的理解:泛型就是广泛的类型,既然是广泛的类型,就是应用范围很广,可适用于多种形式,目的是为了提高代码的复用性。
优势:
代码重用: 可以编写与特定类型无关的通用代码,提高代码的复用性。
类型安全: 在编译时进行类型检查,避免在运行时出现类型错误。
抽象性: 允许编写更抽象和通用的代码,适应不同的数据类型和数据结构。
1、泛型的标识符:可使用任意标识符
在泛型中,通常使用一些约定俗成的标识符,比如常见的 T
(表示 Type)、U
、V
等,但实际上你可以使用任何标识符。
function identity<T>(arg: T): T { return arg; }
2、泛型函数
function identity<T>(arg: T): T { return arg; } // 使用泛型函数 let result = identity<string>("Hello"); console.log(result); // 输出: Hello let numberResult = identity<number>(42); console.log(numberResult); // 输出: 42
4、泛型接口
// 基本语法 interface Pair<T, U> { first: T; second: U; } // 使用泛型接口 let pair: Pair<string, number> = { first: "hello", second: 42 }; console.log(pair); // 输出: { first: 'hello', second: 42 }
5、泛型类
// 基本语法 class Box<T> { private value: T; constructor(value: T) { this.value = value; } getValue(): T { return this.value; } } // 使用泛型类 let stringBox = new Box<string>("TypeScript"); console.log(stringBox.getValue()); // 输出: TypeScript
6、泛型与默认值
// 基本语法 function defaultValue<T = string>(arg: T): T { return arg; } // 使用带默认值的泛型函数 let result1 = defaultValue("hello"); // 推断为 string 类型 let result2 = defaultValue(42); // 推断为 number 类型
打完收工!