microsoft / microsoft/TypeScript
ts2367 Comparing non-comparable types not detected with optional property
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.4k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con la riproduzione minima nelle funzioni x, y e z, oppure apri il TypeScript Playground collegato. Confronta le diagnostiche per le proprietà obbligatorie, impostate esplicitamente su undefined e opzionali. Il lavoro è terminato quando il confronto in z segnala TS2367 come x e y, preservando il comportamento esistente per gli altri esempi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 35/100