gpt4 book ai didi

javascript - 将 typescript 字符串文字类型转换为字符串数组

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:29 24 4
gpt4 key购买 nike

我有

type ImageVerticalSpacing = 'ignoreBottom' | 'ignoreTop' | 'ignoreBoth' 
| 'Default';

在 typescript 中,需要将这些字符串作为字符串数组传递给下拉列表。如何将 ImageVerticalSpacing 类型转换为字符串数组?

最佳答案

您无法在运行时将 TypeScript 中的类型转换为值。但您可以相反:创建一个运行时对象并让 TypeScript 推断其类型。

用于此目的的理想运行时对象是 tuple .不幸的是,TypeScript 本身并不能很好地推断元组。我使用了一个名为 tuple() 的辅助函数,它返回元组类型。

更新:2018-12,自 TypeScript 3.0 以来,tuple() 函数可以这样写:

type Narrowable = string | number | boolean | symbol | 
object | {} | void | null | undefined;
const tuple = <T extends Narrowable[]>(...args: T)=>args;

使用上面的辅助函数,你可以这样做:

const imageVerticalSpacing = tuple('ignoreBottom','ignoreTop','ignoreBoth','Default');

type ImageVerticalSpacing = (typeof imageVerticalSpacing)[number];

imageVerticalSpacing 对象是可用于下拉列表的字符串数组,类型为 ['ignoreBottom','ignoreTop','ignoreBoth','Default']。并且类型 ImageVerticalSpacing 是相同的 'ignoreBottom' | '忽略顶部' | '忽略两者' | “默认” 如您声明的那样。

(查看 The Playground 上的实际操作)

希望对您有所帮助。祝你好运!

关于javascript - 将 typescript 字符串文字类型转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com