när jag använder TypeScript-kompilatorns API, upptäckte jag att interface ClassDeclaration innehåller en valfri egenskap "name"
När jag använder TypeScript-kompilatorns API upptäckte jag att gränssnittet ClassDeclaration innehåller den valfria egenskapen name. Hur kan jag få en ClassDeclaration-nod utan namn?
Jag upptäckte också att gränssnittet InterfaceDeclaration innehåller en obligatorisk egenskap name.
Varför är det annorlunda?
Svar #1
En klassdeklaration får inte innehålla ett namn när den exporteras som standardexport.
export default class {
method() {
}
}
https://ts-ast-viewer.com/#code/KYDwDg9gTgLgBAE2AMwIYFcA28DGnUDOBcA3gFByVwC2wMAFhAgBQCUpFVAvmV0A
Det samma är inte möjligt för ett gränssnitt och det kommer att orsaka ett syntaxfel.
https://ts-ast-viewer.com/#code/KYDwDg9gTgLgBAE2AMwIYFcA28CWA7GYKNAY2DgG8AoAXyA
Jag är inte säker på varför de bestämde det, men att slippa oroa sig för att namnet kanske inte finns gör saker och ting lättare.
