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

TypeScript如何定义数组类型使其元素仅为指定枚举成员值

约束数组仅存储指定枚举成员值的类型标注方法

直接使用枚举名[]作为数组的类型标注即可,TypeScript会自动收集该枚举下所有成员值组成联合类型,作为数组成员的校验规则,拦截所有非枚举成员的赋值。

代码示例

enum example {
    key1 = 'A',
    key2 = 2,
    key3 = '3',
};

// 校验通过:所有元素均为example枚举成员
const validArray: example[] = [example.key1, example.key2];

// 校验报错:'other'不属于example枚举的合法成员值
const invalidArray: example[] = [example.key1, 'other'];

注意事项

  • 不建议手动拼接枚举值的联合类型做标注(例如写('A' | 2 | '3')[]),后续枚举增删成员时需要同步修改类型定义,维护成本高
  • 不要使用any[]、unknown[]这类宽松类型标注数组,会完全丢失枚举成员的校验能力
  • 该方案天然兼容混合值枚举(同时包含数字、字符串类型成员值的枚举),枚举成员变更时校验规则会自动同步,不需要额外调整类型

如果需要限制数组仅能存入某几个特定枚举成员,可以在数组标注时传入对应成员的联合类型,例如把example[]改成(example.key1 | example.key2)[],此时存入example.key3也会触发类型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:12:28