typescript 键入脚本枚举,数组作为值

frebpwbc  于 2023-01-14  发布在  TypeScript
关注(0)|答案(3)|浏览(153)

我觉得很奇怪

enum MessageStatusGroup {
  PENDING = [1, 2, 3],
  PUBLISHED = [4],
  DRAFT = [0],
}

并且我的linter给出错误

在 typescript 中有没有任何限制,阻止指定数组作为值?

gab6jxml

gab6jxml1#

jna和TBA是对的。
但您可以简单地解决以下问题:

export const MessageStatusGroup = {
  PENDING : [1, 2, 3],
  PUBLISHED : [4],
  DRAFT : [0],
} as const;

它应该可以做到这一点。末尾的“as const”将确保MessageStatusGroup的不变性,然后可以像枚举一样使用它。

cotxawn7

cotxawn72#

简单地说,TypeScript支持numeric and string-based枚举,不支持数组。

ohfgkhjo

ohfgkhjo3#

是的,在TypeScript枚举中,值必须是字符串或数字类型。数组不是有效的值。这就是为什么你的linter给出错误的原因。
TypeScript提供数字枚举和基于字符串的枚举。
Third line here
也可以指向其他枚举

enum Foo {
  Bar = 'Baz'
}

enum PointTo {
  Bar = Foo.Bar
}

对于数字枚举,还可以指向返回数值的函数。

const numFunc = () => 4;

enum PointTo {
  Function = numFunc()
}

查看typescriptlang了解更多示例

相关问题