🎯 学习目标

  • 理解泛型的概念和作用
  • 掌握泛型变量的使用
  • 学会定义泛型函数
  • 了解泛型的类型推断

📚 为什么需要泛型?

// 没有泛型:需要为每种类型写函数 function identityNumber(arg: number): number { return arg; } function identityString(arg: string): string { return arg; } // 使用 any:失去类型安全 function identityAny(arg: any): any { return arg; } const result = identityAny(123); // 类型是 any,不是 number // 使用泛型:保持类型安全 + 复用 function identity<T>(arg: T): T { return arg; } const num = identity<number>(123); // 类型是 number const str = identity<string>('hello'); // 类型是 string // 类型推断:TypeScript 自动推断类型 const inferred = identity(true); // 类型是 boolean
💡
泛型优势

泛型允许我们编写可复用的代码,同时保持类型安全。函数/类/接口可以使用类型变量,在实际使用时确定具体类型。

🔧 泛型语法

// 泛型函数 function first<T>(arr: T[]): T | undefined { return arr[0]; } first<number>([1, 2, 3]); // number | undefined first(['a', 'b', 'c']); // string | undefined (类型推断) // 泛型箭头函数 const last = <T,>(arr: T[]): T | undefined => arr[arr.length - 1]; // 多个类型变量 function pair<K, V>(key: K, value: V): [K, V] { return [key, value]; } pair('name', 'Alice'); // [string, string] pair(1, true); // [number, boolean]

📝 本节小结

  • • 泛型使用 <T> 定义类型变量
  • • T 是占位符,使用时确定具体类型
  • • 支持类型推断,可省略显式类型参数
  • • 可以有多个类型变量