Type inference worked in 4.2.3 but fails in 4.3.2
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- typescript
- Área
- compilers
Línea de trabajo
Comienza con la reproducción vinculada en TypeScript Playground y compara la inferencia entre las versiones 4.2.3 y 4.3.2, centrándote en la elección de null en el array choices y en la llamada a promptChoice. Se considera terminado cuando el ejemplo ya no informe del error de asignación de tupla y choice se infiera como 'one'|'two'|'three'.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug Report
🔎 Search Terms
type inference
🕗 Version & Regression Information
4.3.2
- This is a crash
[x] This changed between versions 4.2.3 and 4.3.2 - This is the behavior in every version I tried, and I reviewed the FAQ for entries about _________
- I was unable to test this on prior versions because _______
⏯ Playground Link
Playground link with relevant code
💻 Code
(strict null checks off)
interface PromptChoiceOptions<T extends string> {
label: string;
button: string;
default?: T;
choices: readonly ( T | [ string, T ] )[];
}
function promptChoice<T extends string>( options?: Partial<PromptChoiceOptions<T>> ) {
return options?.choices?.[ 0 ] ?? null; // simplified
}
const choice = promptChoice( { label: 'example', button: 'select', choices: [
[ 'null', null ], // problem seems to be related to this line
[ 'One', 'one' ],
[ 'Two', 'two' ],
[ 'Three', 'three' ]
] } );
🙁 Actual behavior
Type [string, "two"] is not assignable to type [string, "one"]
🙂 Expected behavior
choice is inferred to be 'one'|'two'|'three'
In creating a minimal repro for this, I discovered that commenting out the null choice makes the code behave properly. Also, changing the type of choices to readonly ( T | [ string, T|null] )[]; with strict null checking makes the problem always occur.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
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.
Más de microsoft/TypeScript
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
microsoft/TypeScript#64322 · 2 comentarios · 1 reacción · 2 asignados ·
-
Possible Improvement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/TypeScript#64278 · 1 comentario · 1 reacción ·
-
Docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
microsoft/TypeScript#64118 · 1 comentario ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
microsoft/TypeScript#64094 ·
-
Docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
microsoft/TypeScript#63959 · 5 comentarios ·
Todos los issues de microsoft/TypeScript
Issues similares
-
kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
kubernetes-sigs/prow#953 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
caddyserver/caddy#8046 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
L1 recommended for recruits
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
area/entangle bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100