SuperAPI AI 工具集

typescript-utility-types

编程与开发

查看项目

更新于 10-16 02:09

技能介绍

用途

TypeScript Utility Types 是一份关于 TypeScript 类型系统的技能资料,目标是帮助开发者掌握内置工具类型、映射类型、条件类型和高级类型操作技巧,从而编写灵活且类型安全的 TypeScript 代码。当需要处理 TypeScript 工具类型、映射类型和高级类型操作,或构建灵活的类型安全代码时可参考使用。

主要能力

内置工具类型

  • Partial 与 Required:Partial 使所有属性变为可选,Required 使所有属性变为必填。示例展示了用 Partial 实现 updateUser 的局部更新,用 Required 校验配置对象。
  • Pick 与 Omit:Pick 选取指定属性(如 ArticlePreview),Omit 移除指定属性(如 ArticleWithoutDates),两者可组合使用。
  • Readonly 与 Record:Readonly 使属性只读,并给出 DeepReadonly 的递归写法;Record 用指定键和值类型创建对象类型,如 RolePermissions、RouteHandlers。
  • Extract 与 Exclude:按条件筛选或排除联合类型成员,如从 Status 中提取 CompletedStatus、排除得到 ActiveStatus,并可按判别属性筛选 Shape 联合。
  • ReturnType 与 Parameters:提取函数返回类型和参数元组,支持泛型函数(如 processData<User>)。

映射类型

  • 基础映射:Flags(全部转为 boolean)、Nullable(全部可空)、Getters(全部转为函数)。
  • 修饰符:-readonly 移除只读、-? 移除可选、+? 添加可选。
  • 高级映射:Promisify、Boxed、Proxy 等属性类型转换。

条件类型

  • 基础条件类型 T extends U ? X : Y,以及嵌套条件判断类型名。
  • 分布式条件类型及其非分布式写法(用元组包裹)。
  • 使用 infer 推断返回类型、数组元素类型、Promise 解包类型、首个参数类型等。

模板字面量类型

  • 基础模板字面量与联合展开(如 ColoredQuantity、事件名 onClick)。
  • 字符串操作类型:Uppercase、Lowercase、Capitalize、Uncapitalize,并组合生成 getter/setter 名称与访问器类型。
  • 模式匹配:从路由字符串提取参数(ExtractRouteParams)、将 CSS 属性名转为驼峰(CamelCase)。

键重映射

  • 按类型过滤键(OmitByType、PickByType)。
  • 为键添加前缀(Prefix)。
  • 按类型重命名键(RenameByType)。

高级类型操作

  • 递归类型(JSONValue、Path、DeepPartial)。
  • 联合与交叉类型工具(UnionToIntersection、RequiredKeys、OptionalKeys)。
  • 函数类型工具(Asyncify、Curry)。
  • 类型安全的构建器模式(Builder)。

类型推断辅助与类型守卫

  • const 断言将数组/对象推断为字面量类型。
  • 用户自定义类型守卫(isString、isUser)以及泛型类型守卫工厂 hasProperty。

使用方式

资料以类型定义与代码片段形式呈现,可直接作为编写 TypeScript 类型工具时的参考模式,按需复制并调整其中的类型别名、条件判断与映射逻辑。

适用场景

适用于需要设计可复用类型工具、约束函数输入输出、从联合类型中筛选成员、解析字符串模式为类型、构建类型安全的 API 与配置对象等 TypeScript 类型建模场景。

限制

资料仅覆盖类型层面的写法与示例,未说明运行环境版本要求、与具体框架的集成方式及性能影响;最佳实践部分内容在提供的资料中未完整给出。