在我的项目中,我需要许多字符串文字类型和各种类型的任务(如类型保护)的允许值数组。
这就是我们所拥有的:
type Animal = 'cat' | 'dog' | 'rabbit' | 'snake'
const animals: Animal[] = ['cat', 'dog', 'rabbit', 'snake']
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是需要在源代码中多次列出键。
另一种方法是使用“ 获取字符串文字类型值的数组”中建议的枚举,但由于枚举的已编译代码大于数组,因此在运行时会产生开销。
我找到了另一种没有运行时开销的方法,但是我不确定它将来是否会起作用,因为它可能是一个错误。
const notWidened = <T extends string>(val: T[]) => val
const animals = notWidened(['cat', 'dog', 'rabbit', 'snake'])
type Animal = typeof animals[0]
Run Code Online (Sandbox Code Playgroud)
因此,问题是使用此代码段是否安全,或者将来会中断。有没有更好的方法来获取文字字符串类型和数组而不重复。
typescript ×1