microsoft / microsoft/TypeScript

JSDoc optional property in object

Ouverte
#39,906 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Domain: JSDoc
Langage dominant
Go
Étoiles
111k
Forks
14.4k
Merge moyen
1 j 19 h
PR mergées (30 j)
117

Description

TypeScript Version: 3.9.x & 4.1.x

Search Terms: jsdoc optional

There seems to be a regression since version 3.9.x where optional params in JSDocs are not converted correctly in declaration files. Several issues were created (linked below) and patches were made, however, it seems that params nested inside objects are still not correctly handled as optional when surrounded by brackets.

Code

/**
 * Does Foo
 *
 * @param {object} opts
 * @param {string} [opts.bar] - is optional
 * @returns void
 */
function foo(opts ) {
  // ..
}

Expected behavior: (as well as actual behavior <=3.8.3)

declare function foo(opts: {
    bar?: string;
}): void;

Actual behavior:

declare function foo(opts: {
    bar: string;
}): void;

Related Issues:
https://github.com/microsoft/TypeScript/issues/39111 was addressed with https://github.com/microsoft/TypeScript/pull/39487, but it doesn't seem that nested properties were covered in that fix.
https://github.com/microsoft/TypeScript/pull/39123 and https://github.com/microsoft/TypeScript/pull/39457 seem to relate to Closure notation, not sure if they're related.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’exemple JSDoc fourni avec TypeScript 3.9.x et 4.1.x, en comparant la déclaration générée avec la propriété imbriquée optionnelle attendue. Lisez ensuite issue #39111 et pull request #39487 pour comprendre le correctif associé ; le travail est terminé lorsque les propriétés imbriquées entre crochets sont émises avec ? dans la déclaration.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, typescript
Domaine
compilers
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.