You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建符合指定Union类型的数组,无需手动复制元素?

解决TypeScript联合类型与运行时数组一致性问题

核心思路

先定义运行时数组作为唯一数据源,再基于该数组推导联合类型,从根源上避免手动同步类型成员和数组元素的麻烦。

具体实现代码

// 唯一数据源:运行时数组
const nameList = [
  'email',
  'newEmail',
  'password',
  'passwordConfirm',
  'deleteAccountPassword'
] as const; // as const 强制TS推导元素为具体字面量类型,而非宽泛的string

// 基于数组自动推导联合类型
type NameUnion = typeof nameList[number];

// 直接用数组做判断,类型和数组天然保持一致
if(nameList.includes(name as NameUnion)){
  // 执行业务逻辑
}

关键细节说明

  • as const 必不可少:它会锁定数组元素的类型为具体的字符串字面量,确保推导出来的NameUnion是你需要的联合类型,而不是模糊的string。
  • 类型断言的作用:如果name的类型是宽泛的string,需要用name as NameUnion来满足includes方法的类型校验;如果提前给name定义了string | NameUnion类型,则可以省略断言。

内容的提问来源于stack exchange,提问作者Richardson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:42:05