当我使用打字稿编译器API时,我发现接口ClassDeclaration包含可选属性“名称”

问题描述

当我使用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

我不确定他们为什么要这样决定,但是不必担心名称可能不存在,这确实使事情变得容易。