SuperAPI AI 工具集

no-null-in-aliases

通用与其它

查看项目

更新于 10-16 09:31

技能介绍

用途:这是一条 TypeScript 代码规范技能,适用于定义类型别名、命名含 null 的类型、梳理令人困惑的可空性,以及设计函数参数时参考。核心规则是类型别名应表示有效值,用 User | null 显式表达可空,而不是把 null 藏进别名或命名成 NullableUser、MaybeUser。

主要能力与要点:

  1. 隐藏可空性问题——若 type User = { id: string; name: string } | null,使用处出现可选链 ?. 时,读者无法从参数类型直接判断原因,必须回查定义。
  2. 显式可空性——将别名定义为 type User = { id: string; name: string },函数签名写 user: User | null,可空性在使用处可见,TypeScript 也会报 'user' is possibly 'null',从而防止空值导致的运行时错误。
  3. 若确实要包含 null,可用显式命名 NullableUser,但最佳做法是不设别名、在使用处写 User | null。
  4. 该规则只作用于类型别名的顶层;对象内部的属性可空是允许且正常的,例如索引签名 [name: string]: Date | undefined,或 interface Config { timeout?: number; data: Data | null }。可选属性与可空属性类似,但何时使用需参考其他条目。

使用方式:在编写或审查 TypeScript 类型定义时,检查是否存在以 | null 或 | undefined 结尾的别名、名为 NullableX/MaybeX 的类型、对自认为必需的参数使用可选链等情况,出现即为警示信号,应把可空性移到使用处。

适用场景:类型设计、接口与函数参数定义、处理来自 API 的可空数据(应在边界转换而非污染类型)、以及可读性与重构安全性要求较高的代码库。

限制:正文为编码风格建议,未提供安装命令、工具集成方式、价格或平台信息;实际执行效果依赖具体项目与团队约定。内容基于《Effective TypeScript》第 32 条:避免在类型别名中包含 null 或 undefined。