从联合类型为运行时创建数组

时间:2019-07-23 20:57:04

标签: typescript union-types

假设我具有以下联合类型:

type Browser = 'Chrome' | 'Firefox'

我想用它创建一个数组:

const browsers = /* code to transform Browser type in ['Chrome', 'Firefox']

想法是在运行时使用它。有办法吗?我已经尝试过使用key of,但是当然不起作用。

2 个答案:

答案 0 :(得分:0)

听起来像您可能想使用enum

enum Browser {
    Chrome = 'Chrome',
    Firefox = 'Firefox',
}

const browsers = Object.values(Browser);

答案 1 :(得分:0)

Typescript注释在运行时不存在,因此无法在运行时根据类型创建数组。

另一方面,如果打算只编写一次浏览器列表:

const browsers = ['Chrome', 'Firefox'] as const;
type Browser = typeof browsers[number] // "Chrome" | "Firefox"