Skip to content
接受新项目 登录 注册

TypeScript 类型体操:从入门到实用

不讲概念讲实战,用真实业务场景讲清楚条件类型、映射类型、模板字面量的用法。

发布日期
作者 admin
阅读时长 1 min read

TypeScript 的类型系统是图灵完备的,这意味着可以用类型表达复杂逻辑。本文不堆概念,直接上实际遇到的场景。

条件类型:动态返回类型

场景:一个函数根据参数类型返回不同结构,如何让 TypeScript 正确推断返回值?

type Extract<T, U> = T extends U ? T : never;

function getValues<T, K extends keyof T>(obj: T, keys: K[]): T[K][] {
  return keys.map(k => obj[k]);
}

映射类型:批量变换属性

将一个类型的所有属性变为可选,或者将所有属性值包装成 Promise:

type Promisify<T> = {
  [K in keyof T]: Promise<T[K]>;
};

模板字面量类型

用类型层面的字符串拼接来生成事件名、CSS 类名等有规律的字符串集合,比枚举更灵活。

实用原则

能用简单类型解决的,不要用复杂类型。类型体操的目标是让 IDE 帮你找 bug,而不是炫技。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注