microsoft / microsoft/TypeScript

new Map() infers type only from the first item in the iterable

Ouverte
#37,527 6 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

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

TypeScript Version: 3.8.3

Search Terms: map infer type first item

Code

type Lookup = Map<number, boolean | string>;

const foo = new Map([
    [1, true],
    [2, 'foo']
]);

const bar: Lookup = new Map([
    [1, true],
    [2, 'foo']
]);

const baz: Lookup = new Map<number, boolean | string>([
    [1, true],
    [2, 'foo']
]);

Expected behavior: All 3 assignments work.

Actual behavior: The first 2 assignments fail because the type of the map is inferred as Map<number, () => boolean> (because of the first item). The 3rd one works but duplicates the type of the map.

Playground Link

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 reproduire le comportement de TypeScript 3.8.3 dans le Playground lié en utilisant les trois exemples de Map. Suivez la manière dont le checker infère le type de l’itérable passé au constructeur de Map, puis vérifiez que les trois affectations acceptent des valeurs booléennes et de chaîne mélangées sans nécessiter un type explicite dupliqué.

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
38/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.