angular - Hvis-betingelsen returnerer false hvis et tall eksisterer, men er 0


Jeg har en klasse med et valgfritt felt startDateHour:

export class Test {
  startDateHour?: number;

  // more fields, constructor etc.
}

Jeg vil gjøre noe, hvis startDateHour eksisterer:

if (test.startDateHour) {
  //do something
}

Problemet er at denne sjekken ikke fungerer som forventet når startDateHour er 0. Hvis den er 0, eksisterer den fortsatt og jeg vil kjøre koden, men if (startDateHour) returnerer false i det tilfellet.

Selvfølgelig kunne jeg gjort noe som:

if (test.startDateHour || test.startDateHour === 0) {
  // do something
}

Men finnes det en bedre måte, som en sjekk som gjør begge tingene ovenfor?

Svar #1

0 er falsk. Men den nyeste versjonen av TypeScript tilbyr en annen operator kalt Nullish Coalescing. Avhengig av hva du ønsker å gjøre innenfor if-setningen, kan det være at du vil bruke den.

Les om det her for eksempel: https://dev.to/obinnaogbonnajoseph/optional-chaining-and-nullish-coalescing-typescript-3-7-5899

Svar #2

Prøv dette,

if(!isNaN(test.startDateHour)) {
}

Relaterte artikler