问题描述
当我使用Typescript编译器api时,我发现接口ClassDeclaration
包含可选属性name
。
如何获得一个没有名称的ClassDeclaration
节点?
我还发现接口InterfaceDeclaration
包含必需的属性name
。
为什么不同?
解决方法
作为默认导出导出时,类声明中可能不包含名称。
export default class {
method() {
}
}
https://ts-ast-viewer.com/#code/KYDwDg9gTgLgBAE2AMwIYFcA28DGnUDOBcA3gFByVwC2wMAFhAgBQCUpFVAvmV0A
接口不可能做到这一点,并且会引发语法错误。
https://ts-ast-viewer.com/#code/KYDwDg9gTgLgBAE2AMwIYFcA28CWA7GYKNAY2DgG8AoAXyA
我不确定他们为什么要这样决定,但是不必担心名称可能不存在,这确实使事情变得容易。