Typescript: objekt kan vara null rapporterat i ett jämförelseuttryck
Jag får en TS18047 på en jämförelse där det falska resultatet av null-jämförelse är ett önskat utfall.
så, i princip:
const a: number | null = null;
if (a >= 250) { /* will not execute because result of comparison is false */ }
detta är vad jag vill. och den här koden fungerade också innan jag införlivade TypeScript.
Jag vet att jag bara kunde göra en null-kontroll, men det finns typ tio grenar som jämför denna variabel med olika siffror.
Endast den sista else hanterar det faktiska null-värdet.
Måste jag faktiskt kontrollera om det är null eller är det möjligt för mig att slingra mig ur det här?
Svar #1
Tja, det här bör tekniskt sett fungera eftersom du inte kan jämföra något som är null med ett tal eftersom det alltid kommer att vara falskt, så du behöver kontrollera om det är null först.
if (a && a >= 250) {
// do something
}
Detta kommer också att fungera men det är inte bästa praxis eftersom det motverkar syftet med TypeScript
if (a! >= 250) {
// do something
}
Svar #2
Metoden typeof har ibland fungerat för mig.
if (typeof a == 'number' && a >= 250) {
//do something
}
