gpt4 book ai didi

typescript - 获取字符串文字类型值的数组

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

我需要获取字符串文字所有可能值的完整列表。

type YesNo = "Yes" | "No";
let arrayOfYesNo : Array<string> = someMagicFunction(YesNo); //["Yes", "No"]

有什么办法可以实现吗?

最佳答案

枚举可以帮助你:

enum YesNo {
YES,
NO
}

interface EnumObject {
[enumValue: number]: string;
}

function getEnumValues(e: EnumObject): string[] {
return Object.keys(e).map((i) => e[i]);
}

getEnumValues(YesNo); // ['YES', 'NO']

type 声明不会创建任何您可以在运行时使用的符号,它只会在类型系统中创建一个别名。所以你无法将它用作函数参数。

如果您需要 YesNo 类型的字符串值,您可以使用一个技巧(因为枚举的字符串值不是 TS yet 的一部分):

const YesNoEnum = {
Yes: 'Yes',
No: 'No'
};

function thatAcceptsYesNoValue(vale: keyof typeof YesNoEnum): void {}

然后您可以使用 getEnumValues(YesNoEnum) 获取 YesNoEnum 的可能值,即 ['Yes', 'No']。这有点难看,但那行得通。

老实说,我会只使用像这样的静态变量:

type YesNo = 'yes' | 'no';
const YES_NO_VALUES: YesNo[] = ['yes', 'no'];

关于typescript - 获取字符串文字类型值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44154009/

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