Hur man kontrollerar odefinierad i TypeScript
Jag använder den här koden för att kontrollera om en variabel är odefinierad, men den fungerar inte.
var uemail = localStorage.getItem("useremail");
if (typeof uemail === "undefined")
{
alert('undefined');
}
else
{
alert('defined');
}Svar #1
I TypeScript 2 kan du använda typen undefined för att kontrollera om värden är undefined.
Om du deklarerar en variabel som:
let uemail : string | undefined;
Då kan du kontrollera om variabeln uemail är odefinierad så här:
if(uemail === undefined)
{
}
Svar #2
Från och med Typescript 3.7 kan du också använda nullish coalescing:
let x = foo ?? bar();
Vilket är motsvarigheten för att kontrollera om något är null eller undefined:
let x = (foo !== null && foo !== undefined) ?
foo :
bar();
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-coalescing
Även om det inte är exakt samma, kan du skriva din kod som:
var uemail = localStorage.getItem("useremail") ?? alert('Undefined');
Svar #3
Du kan bara kontrollera om detta är sant:
if(uemail) {
console.log("I have something");
} else {
console.log("Nothing here...");
}
Gå och kolla svaret här: Finns det en standardfunktion för att kontrollera null, undefined eller tomma variabler i JavaScript?
Hoppas det här hjälper!
Svar #4
Lägger till detta sena svar för att kolla efter object.propertie som kan hjälpa i vissa fall:
Genom att använda en juggling-kontroll kan du testa både null och undefined i ett slag:
if (object.property == null) {
Om du använder en strikt kontroll kommer det bara att vara sant för värden som är satt till null och kommer inte att utvärderas som sant för odefinierade variabler:
if (object.property === null) {
Typescript har INTE en funktion för att kontrollera om en variabel är definierad.
Uppdatering oktober 2020
Du kan nu också använda den nullish sammanslagningsoperator som introducerades i Typescript.
let neverNullOrUndefined = someValue ?? anotherValue;
Här kommer anotherValue endast att returneras om someValue är null eller undefined.
Svar #5
Det är för att det redan är null eller undefined. Null eller undefined har ingen typ. Du kan kolla om det är undefined först. I TypeScript (null == undefined) är sant.
if (uemail == undefined) {
alert('undefined');
} else {
alert('defined');
}
eller
if (uemail == null) {
alert('undefined');
} else {
alert('defined');
}
