类型推断的高级用法 #
TypeScript 的类型推断机制在简单场景下自动推导类型,在高级用法中可以结合上下文、条件类型等实现更智能的类型处理。
基本概念 #
类型推断是指 TypeScript 根据值的使用上下文自动确定其类型。高级用法包括上下文类型推断、条件类型中的推断、泛型推断等。
使用场景 #
- 在函数返回类型中自动推断复杂类型。
- 结合泛型和条件类型,实现动态类型推断。
- 在异步函数或 Promise 中推断类型。
示例代码 #
// 上下文类型推断
function createArray<T>(length: number, value: T): T[] {
return Array.from({ length }, () => value);
}
const arr = createArray(3, 'a'); // string[]
// 条件类型推断
type Flatten<T> = T extends Array<infer U> ? U : T;
type Str = Flatten<string[]>; // string
type Num = Flatten<number>; // number
// 泛型推断
function map<T, U>(arr: T[], fn: (item: T) => U): U[] {
return arr.map(fn);
}
const numbers = map([1, 2, 3], (n) => n.toString()); // string[]
最佳实践 #
- 利用 infer 关键字在条件类型中提取类型信息。
- 在泛型函数中,尽量让 TypeScript 自动推断类型,减少显式类型注解。
- 注意推断的局限性,在复杂场景下结合类型断言或显式声明。