Exponerar Typescript-kompilatorn standardvärdet för JsDoc @param?


Jag förväntade mig att kunna extrahera standardvärdet för en JsDoc-param men jag kan faktiskt inte hitta standardvärdet på JsDoc-noden. Till exempel, ge detta:

/** * @param [foo=42] Detta är foo! */

Jag skulle vilja extrahera '42' från noden. Ändå hittar jag inget standardvärdesfält på ts-noden:

Det exponerar isBracketed men jag kan inte hitta 42. Typescript hävdar dock att det stöder standardargument i JsDoc:

https://github.com/Microsoft/TypeScript/wiki/JSDoc-support-in-JavaScript#param-and-returns

Ändå verkar jag inte kunna hitta de exponerade i AST... :<

Innan jag rapporterar ett fel tänkte jag att jag skulle kolla runt och se om någon vet den hemliga handskakningen.

Svar #1

Nej, det finns inte för närvarande i AST. Parsern hoppar för närvarande över uttrycket utan att lagra returvärdet någonstans.

// May have an optional default, e.g. '[foo = 42]'
if (parseOptionalToken(SyntaxKind.EqualsToken)) {
    parseExpression();
}

Källa