Typescript 从枚举中获取第一个枚举项

Typescript 从枚举中获取第一个枚举项,typescript,Typescript,是否可以在typescript中获取枚举的第一项 例如,选项。此枚举中的所有: enum Option { All = "all", Mine = "mine", } 已尝试,但无法编译: const first: Option = Option[0]; // first should be All. This won't compile - Property '0' does not exist on type 'typeof Opti

是否可以在typescript中获取枚举的第一项

例如,
选项。此枚举中的所有

enum Option {
    All = "all",
    Mine = "mine",
}
已尝试,但无法编译:

const first: Option = Option[0]; // first should be All. This won't compile - Property '0' does not exist on type 'typeof Option'.
请试试这个:

Option[Object.keys(Option)[0]]

选项本质上是一个对象

这是编译为JS时的定义:

var Option;
(function (Option) {
    Option["All"] = "all";
    Option["Mine"] = "mine";
})(Option || (Option = {}));
可以使用Object.keys()或Object.values()将对象转换为数组

因此,为了使first='All',您可以使用:

enum Option {
    All = "all",
    Mine = "mine",
}

const first = Object.keys(Option)[0];
console.log(first)
如果您想了解TS和JS之间的情况,可以使用。我已经用这里显示的代码加载了这个链接


如果希望第一个值的类型为Option,请使用
Object.values(选项)[0]

Typescript选项的名称似乎有问题,因此如果将其更改为
选项
,则正确显示第一个选项的类型为
选项


我的本地环境并没有表现出同样的奇怪。

枚举变成了一个对象,它不是一个有序的数据结构。如果让编译器从0自动编号,则只有第0个值。但是上下文是什么,为什么需要第一个值?枚举代码是生成的,我需要一个默认值。生成它是什么意思?如果这不是在编译时发生的,那么实际上这不是一个TypeScript问题,您实际上是在问。生成的代码是TypeScript,但我无法控制。我无法更改它,但需要(第一个)值。我可以循环枚举,因此在某种意义上有一个第一个。这给出了:元素隐式地有一个“any”类型,因为索引表达式不是“number”类型。
first
在这里是类型
string
,我需要枚举值。也许我应该叫它枚举项?第二个操场链接断了?我修复了链接。不知道是怎么发生的。很好,这是有效的:
const-first:Options=Object.values(Options)[0]
enum Options {
    All = "all",
    Mine = "mine",
}

const first = Object.values(Options)[0];
console.log(first) // 'all' of type Options