首页 > 解决方案 > 如何将字符串“变量”数组转换为打字稿类型?

问题描述

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

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

两个答案都传递了一个内联数组,以将数组中的字符串值作为文字保存。但是,当您将数组作为变量传递时,它就无法工作。

在线传递值有效。

编辑 TypeScript - 数组到文字 - 硬编码有效 在线作品

但是将值作为变量传递是行不通的

编辑 TypeScript - 数组到文字 - 不起作用 在此处输入图像描述

问题

那么如何创建一个类型来将允许的字符串值列表限制domElements为变量asLiterals

标签: arraystypescript

解决方案


当一个数组字面量被分配给一个变量时,它会被加宽以匹配典型的行为。

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

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

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

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


推荐阅读