能否为TypeScript枚举成员分配类型?以number[]为例的疑问
TypeScript枚举能否为成员分配
number[]类型? 结论:不行,而且你写的代码本身语法就不对
TypeScript里枚举的语法是成员名 = 具体值,不是成员名: 类型——冒号是用来给变量/属性标注类型的,但枚举成员是要赋值的具体常量,不是类型占位符。
为什么枚举不支持这种操作?
枚举的本质是一组命名的常量值集合,最终会被编译成可运行的JavaScript值(const enum会被内联到使用的地方,但本质还是值层面的东西)。它的成员只能是字符串、数字这类原始值,或者能计算成原始值的常量表达式,根本没法承载数组这种复杂类型,更别说直接给成员标注类型了。
如果你的需求是定义一组和数组类型相关的标识,别用枚举,换这些方案:
- 要是只是区分不同的标识,用字符串字面量类型:
type Size = "Small" | "Medium" | "Large"; - 要是想把标识和
number[]类型绑定,用接口或者类型别名:type SizeMap = { Small: number[]; Medium: number[]; Large: number[]; };
内容的提问来源于stack exchange,提问作者ovuoba chidera
相关产品推荐
相关产品推荐

