microsoft / microsoft/TypeScript
ts2367 Comparing non-comparable types not detected with optional property
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
TypeScript Version: 3.6.0-dev.20190730 (also with 3.5.1)
Search Terms: compare types, comparable, always false comparison, optional property, properties
Code
enum X {
A= 'A'
}
function x(res: {action: string}):boolean {
return res === X.A // error
}
function y(res: {action: string | undefined}):boolean {
return res === X.A // error
}
function z(res: {action?: string}):boolean {
return res === X.A // no error, but always false
}
function correct(res: {action: string}):boolean {
return res.action === X.A // what the code should have been
}
Expected behavior:
The comparison in function z should have resulted in error TS2367: This condition will always return 'false' since the types '{ action?: string; }' and 'X.A' have no overlap.
Actual behavior:
Functions x, y give the correct error. Function z has no compiler error, but the condition will always evaluate to false since it is comparing an object and a string.
Related Issues: n/a
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 mínima en las funciones x, y y z, o abre el TypeScript Playground enlazado. Compara los diagnósticos para las propiedades requeridas, establecidas explícitamente en undefined y opcionales. La tarea estará terminada cuando la comparación en z informe TS2367, al igual que x e y, y se conserve el comportamiento existente para los demás ejemplos.
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
- 35/100