Typescript 文本类型,是否可以在运行时提取值列表
同样值得检查这个类似的问题(第一次更新的答案)Typescript 文本类型,是否可以在运行时提取值列表,typescript,typing,Typescript,Typing,同样值得检查这个类似的问题(第一次更新的答案) 我想做的是验证xtern.dir是否符合类型方向,而不重复可能的值列表,但我认为无法提取文本类型中的值列表,对吗?如果是这样的话,有什么简洁的方法可以达到同样的效果呢?如果您不介意牺牲一点编译时安全性,那么枚举将在这里工作: enum Direction { North = "north", East = "east", South = "south", West = "west", } let direction
我想做的是验证xtern.dir是否符合类型方向,而不重复可能的值列表,但我认为无法提取文本类型中的值列表,对吗?如果是这样的话,有什么简洁的方法可以达到同样的效果呢?如果您不介意牺牲一点编译时安全性,那么
枚举将在这里工作:
enum Direction {
North = "north",
East = "east",
South = "south",
West = "west",
}
let direction1: Direction = Direction.South; // This works
let direction2: Direction = Direction["south"]; // This also works!
let direction3: Direction = Direction["rubbish"]; // But this returns undefined
// rather than a compiler error...
let xtern = JSON.parse(`{"dir":"wrong"}`);
let isValidDir = Direction.hasOwnProperty(xtern.dir); // Can examine it at runtime
但是,如果您想像现在这样继续使用字符串-文字联合,那么当前唯一的选择就是自己编写验证,并使其与类型定义保持同步。此方法在中演示。您可以使用enum
或数组
enum Direction {
North = "north",
East = "east",
South = "south",
West = "west",
}
let direction1: Direction = Direction.South; // This works
let direction2: Direction = Direction["south"]; // This also works!
let direction3: Direction = Direction["rubbish"]; // But this returns undefined
// rather than a compiler error...
let xtern = JSON.parse(`{"dir":"wrong"}`);
let isValidDir = Direction.hasOwnProperty(xtern.dir); // Can examine it at runtime