microsoft / microsoft/TypeScript

TypeScript doesn't error on late definition/initialization of variables from outside an async closure.

Ouverte
#39,499 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Awaiting More Feedback Suggestion
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
1 j 19 h
PR mergées (30 j)
117

Description

TypeScript Version: 4.0-beta and Nightly (as of writing)

Search Terms: async closure variable initialization

Code

async function doSomething(): Promise<void> {
    const x = setTimeout(() => {
        const a = someVar + 1;
    }, 5000)

    await doSomethingSlowly();

    const someVar = 5;
}

Expected behavior:
There should be an error on const a = someVar + 1; since someVar may not have been initialized.

Actual behavior:
No error/warning with any settings that I could find.

Playground Link: link

Related Issues:

Comments
I see folks hit this every so often and it feels like something the TypeScript compiler could help warn against, in a similar way that 2448 and 2454 error.

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 la reproduction fournie dans TypeScript Playground et comparez son comportement avec les diagnostics associés 2448 et 2454. Déterminez si le compilateur peut signaler de manière fiable que someVar peut ne pas être initialisée à travers la async closure, puis validez tout diagnostic par rapport à l’exemple et aux cas associés existants.

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

Évaluation

Stack technique
typescript
Domaine
compilers
Type d'issue
Bug
Difficulté
5/5
Temps estimé
Plus d'une semaine
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.