microsoft / microsoft/TypeScript
Regression in `asserts` behavior modifying type of `this`
Ouverte
Personne n'a encore pris cette issue.
Needs Investigation
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
Bug Report
🔎 Search Terms
asserts regression
🕗 Version & Regression Information
- This changed between versions 4.9.5 and 5.0.4
⏯ Playground Link
Playground link with relevant code
💻 Code
export class Set<S extends number[] = []> {
insert<_>(x: any): asserts this is Set<[...S, 0]> {}
}
const y: Set = new Set();
y.insert(6);
y
//^?
y.insert(6);
y
//^?
🙁 Actual behavior
In 5.0.4
//^? const y: Set<[]>
//^? const y: Set<[]>
🙂 Expected behavior
In 4.9.5
//^? const y: Set<[0]>
//^? const y: Set<[0,0]>
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le TypeScript Playground lié et comparez le comportement signalé dans les versions 4.9.5 et 5.0.4. Étudiez comment la méthode asserts modifie le type de this au fil d’appels successifs à insert. Le travail est terminé lorsque l’exemple réduit y à Set\u003c[0]\u003e après le premier appel et à Set\u003c[0,0]\u003e après le second.
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é
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100