我有一个类属性,其类型是多个字符串文字的联合:
public reaction? : 'haha' | 'wow' | 'angry' | 'sad' | 'like';
我想做的是将这些字符串定义在某种数组的其他位置,然后在属性定义中使用该数组。所以像这样:
allowedStrings = ['haha','wow','angry','sad','like'];
public reaction? : allowedStrings;
我知道上述是不可能的,但这是一般的想法。 Typescript 是否提供了任何可以完成这项工作的东西?
从 TypeScript 3.4 开始,您可以使用运行时值生成类型常量断言.
const allowedStrings = ['haha', 'wow', 'angry', 'sad', 'like'] as const;
type AllowedString = typeof allowedStrings[number]; // [number] is important here
// We can freely map over values
const mapped = allowedStrings.map((s) => s.toUpperCase());
// And use generated type to create type-safe functions
const process = (s: AllowedString) => {
// Type of s is
// s: "haha" | "wow" | "angry" | "sad" | "like"
return s;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)