它们都具有相同的枚举值,例如从TypeScript 3.7.2:
VariableStatement = 224,
FirstStatement = 224,
为什么同一个语法类型有两个名称?
答案 0 :(得分:4)
在SyntaxKind
枚举中,有一些条目不是用来表示具体的语法类型,而是表示它们的 class 。对于语句,其定义如下:
enum SyntaxKind {
// snip
FirstStatement = VariableStatement,
LastStatement = DebuggerStatement,
// snip
}
然后,要检查某种语法类型是否为“语句”类型之一,可以简单地编写kind >= SyntaxKind.FirstStatement && kind <= SyntaxKind.LastStatement
。而且,如果语句种类集将发生更改,则仅应更改FirstStatement
或LastStatement
的定义,而不能更改这些“范围检查”。