microsoft / microsoft/TypeScript
new Map() infers type only from the first item in the iterable
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza reproduciendo el comportamiento de TypeScript 3.8.3 en el Playground enlazado usando los tres ejemplos de Map. Rastrea cómo el checker infiere el tipo del iterable que se pasa al constructor de Map y, después, verifica que las tres asignaciones aceptan valores booleanos y de cadena mezclados sin requerir un tipo explícito duplicado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 38/100