这是我的代码(在 typescript 2.3.4 中):
type TokenType = "operator" | "doubleQuote" | "identifier" | "(end)";
interface Token {
type: TokenType;
value: string;
pos: number;
}
interface PosTokenOp {
type: "operator" | TokenType ;
value: string;
pos: number;
left: Token | null;
right: Token | null;
}
所以我希望 PostTokenOp 类型只是:
interface PosTokenOp {
type: "operator" ;
value: string;
pos: number;
left: Token | null;
right: Token | null;
}
但是,如果我只输入“operator”,它不会识别它是 TokenType 的一部分,并且我的代码中有错误。
所以我想使 PostTokenOp 的类型等于“运算符”,并且准确地说运算符是 TokenType 的值之一。
如果有人知道如何做到这一点。
感谢和问候
最佳答案
如果你可以升级到 Typescript 2.4,你可以使用 String Enums .
例如
enum TokenType{"operator", "doubleQuote", "identifier", "(end)"}
interface Token {
type: TokenType;
value: string;
pos: number;
}
interface PosTokenOp {
type: TokenType.operator ;
value: string;
pos: number;
left: Token | null;
right: Token | null;
}
在 2.4 之前,您可以使用普通的枚举,例如
enum TokenType { operator, doubleQuote ,identifier , end}
interface Token {
type: TokenType;
value: string;
pos: number;
}
interface PosTokenOp {
type: TokenType.operator;
}
然后用法是这样的
test:PosTokenOp = {
type: TokenType.operator
}
console.log(TokenType[this.test.type]);
关于typescript - typescript : 接口(interface)中多个类型的精确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45796795/