如何将字符串数组“变量”转换为打字稿类型?

时间:2019-01-27 02:15:00

标签: arrays typescript

我想知道如何将字符串变量数组转换为键入脚本类型。

注意:已经有两个SO答案可以解决这个问题,但是字符串通过硬编码传递,以保持字符串的值不变。

两个答案都直接传递一个数组,以将字符串值保留为文字。 但是,当您将数组作为变量传递时,它将无法正常工作。

直接传递值。

Edit TypeScript - Array to Literal - Hardcode works in-line works

但是将值作为变量传递不起作用

Edit TypeScript - Array to Literal - Doesn't work enter image description here

问题

那么,如何创建一种类型来限制domElements中的允许字符串值列表作为asLiterals的变量?

1 个答案:

答案 0 :(得分:1)

将数组文字分配给变量后,它会扩展以匹配典型行为。

因此,变量domElements的类型为string[]而不是('a' | 'div' | ...)[]

答案在您自己的代码中。使用与asLiterals()类似的函数来创建文字数组。

export function literalArray<T extends KeyTypes>(...entries: T[]): T[] {
    return entries
}

您还可以在type-plus库中找到此功能。