程序员技术博客
返回文章列表
TypeScript

TypeScript 泛型从入门到实战

加载中...

TypeScript 泛型从入门到实战

泛型的价值不在于“看起来高级”,而在于让类型跟着输入值一起变化。

基础用法

function first<T>(list: T[]): T | undefined {
  return list[0];
}

调用 first([1, 2, 3]) 时,T 会被推断为 number,返回值类型也随之收窄。

条件类型与 infer

type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;

infer U 会捕获 Promise 内部的类型,这在处理异步函数返回值时非常常见。

约束泛型

function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

K extends keyof T 保证了传入的 key 一定存在于对象上,避免运行时才发现拼写错误。

小结

泛型不是语法糖,而是把“类型逻辑”也当作程序来写。

评论 (0)

加载评论中...