Get array of string literal type values
我需要得到字符串文字所有可能值的完整列表。
1 2 | type YesNo ="Yes" |"No"; let arrayOfYesNo : Array<string> = someMagicFunction(YesNo); //["Yes","No"] |
有什么办法能做到这一点吗?
枚举可以帮助您:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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'] |
如果需要为
1 2 3 4 5 6 | const YesNoEnum = { Yes: 'Yes', No: 'No' }; function thatAcceptsYesNoValue(vale: keyof typeof YesNoEnum): void {} |
然后,您可以使用
老实说,我只使用这样的静态变量:
1 2 | type YesNo = 'yes' | 'no'; const YES_NO_VALUES: YesNo[] = ['yes', 'no']; |
TypeScript 2.4最终发布。在支持字符串枚举的情况下,我不再需要使用字符串文本,而且由于类型脚本枚举是编译为javascript的,所以我可以在运行时访问它们(与数字枚举的方法相同)。