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');
  }

Relaterade artiklar