microsoft / microsoft/TypeScript
undefined is narrowed away incorrectly
Abierto
Nadie ha tomado este issue todavía.
Bug
Domain: check: Control Flow
Help Wanted
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
🔎 Search Terms
narrowing undefined, incorrect type narrowing, incorrect if statement narrowing
🕗 Version & Regression Information
- This changed between versions 5.2 and 5.3
⏯ Playground Link
💻 Code
declare class A {
IsA(): this is A;
}
declare const pattern: A | undefined;
function applyPattern() {
if (pattern?.IsA() === false) {
pattern;
// ^?
return;
}
pattern;
// ^?
}
🙁 Actual behavior
pattern is narrowed down to A, removing the undefined
🙂 Expected behavior
pattern should only be narrowed to A | undefined
Additional information about the issue
No response
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 con la reproducción enlazada de TypeScript Playground y compara su comportamiento entre las versiones 5.2 y 5.3. Traza el narrowing del flujo de control para pattern?.IsA() === false; se considera terminado cuando la expresión posterior pattern sigue siendo A | undefined en lugar de quedar reducida a A.
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
- Bastante claro
- Aptitud para principiantes
- 35/100