在TS编译器内部,Identifier
的AST节点的类型扩展了Declaration
:
export interface Identifier extends PrimaryExpression, Declaration {
...
}
为什么?
在公共API中的实际AST中,const x = 3
(整个范围)是VariableDeclaration
,而x
部分是类型声明的name
属性Identifier
。那么,为什么Identifier
本身就是src/compiler/types.ts中的声明?