microsoft / microsoft/TypeScript
Array.isArray type narrows to any[] for ReadonlyArray<T>
Abierto
Nadie ha tomado este issue todavía.
Domain: lib.d.ts
In Discussion
Suggestion
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
TypeScript Version: 2.4.1
Code
declare interface T {
foo: string;
}
const immutable: T | ReadonlyArray<T> = [];
if (Array.isArray(immutable)) {
const x = immutable; // Any[] - Should be ReadonlyArray<T>
}
const mutable: T | Array<T> = [];
if (Array.isArray(mutable)) {
const x = mutable; // T[]
}
Expected behavior: Should type narrow to ReadonlyArray<T>, or at the very least T[].
Actual behavior: Narrows to any[]. Doesn't trigger warnings in noImplicitAny mode either.
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 ejemplo de TypeScript 2.4.1 con Array.isArray, ReadonlyArray y noImplicitAny. Sigue el comportamiento del estrechamiento de tipos para las declaraciones inmutables y mutables, y verifica después que el tipo resultante ya no sea any[] y coincida con el estrechamiento esperado.
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
- Tranquilo
- Claridad
- Bien especificado
- Aptitud para principiantes
- 45/100