microsoft / microsoft/TypeScript
Broken inference between index typed object and Record
Ouverte
Personne n'a encore pris cette issue.
In Discussion
Suggestion
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
TypeScript Version: 2.2.2
Code
interface Errors {
[field: string]: {
key: string
message: string
}
}
const errors: Errors = {}
function genericObjectFunction<K extends string, V>(obj: Record<K, V>): [K, V][] {
return []
}
/*
Argument of type 'Errors' is not assignable to parameter of type 'Record<string, never>'.
Index signatures are incompatible.
Type '{ key: string; message: string; }' is not assignable to type 'never'.
*/
genericObjectFunction(errors)
The types seem generally compatible though, as expected this is legal:
const errorRecord: Record<string, { key: string, message: string }> = errors
Expected behavior:
genericObjectFunction(errors) should compile.
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 la reproduction minimale en TypeScript 2.2.2 dans l’issue, en vous concentrant sur genericObjectFunction et l’inférence de la signature d’index de Errors vers Record. Le travail est terminé lorsque genericObjectFunction(errors) compile tout en préservant la compatibilité avec Record démontrée.
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