这是我的代码(在打字稿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的类型等于“ operator”,并确切地说该operator是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]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句