microsoft / microsoft/TypeScript
Inference breaks when a function returns a tuple with another function
Ouverte
Personne n'a encore pris cette issue.
Bug
Domain: check: Type Inference
- 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
Inference, tuple, generic, callback, higher-order function
🕗 Version & Regression Information
v4.3.2 and below (tested down to v3.3.3)
⏯ Playground Link
Playground link with relevant code
💻 Code
declare function a(): [
<T>(arg: T) => T
]
declare function b<T, U>(a1: T, a2: [(a: T) => U]): U
b(1, [a()[0]]) // returns number, as expected
b(1, a()) // returns unknown (expected a number)
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 reproduisez la différence entre b(1, [a()[0]]) et b(1, a()). Suivez le comportement d'inférence du callback générique renvoyé dans le tuple. La tâche est terminée lorsque le deuxième appel infère number plutôt que unknown, avec une couverture pour le cas de régression présenté.
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é
- Clairement spécifiée
- Accessibilité débutants
- 35/100