microsoft / microsoft/TypeScript
generic function parameter infers boolean as true
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
TypeScript Version: 3.3.0-dev.201xxxxx
Search Terms: true boolean generic function extends default
Code
const fn = <T extends boolean>(flag: T | false = false) => flag
fn({} as boolean)
// The only workaround?
fn<boolean>({} as boolean)
Expected behavior:
Expected fn<boolean>(flag?: boolean) to be inferred
Actual behavior:
Instead got fn<true>(flag?: boolean) as the inferred type.
The issue stems from T | false, which is required for = false to work.
Playground Link: Click here
Related Issues: Possibly https://github.com/Microsoft/TypeScript/issues/28154
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 reproduire l’exemple d’inférence générique de l’issue dans le TypeScript Playground lié, puis comparez-le à l’issue associée #28154. Étudiez le comportement du vérificateur de types pour T | false et les paramètres par défaut. Le travail est considéré comme terminé lorsque fn({} as boolean) infère boolean plutôt que true, tout en conservant le comportement par défaut false.
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
- 45/100