Hvordan fortelle TypeScript at en verdi er et tomt objekt?


Her er koden min.

function DD(x: { y: string } | {}) {
  if (x.y) {//error
   console.log("DD jingo");
  }
}

Jeg får denne feilen: Egenskapen "y" eksisterer ikke i typen "{} | {y: string;}". Egenskapen "y" eksisterer ikke i typen "{}".

Jeg er ny på TypeScript. Hvordan sier man at X kan godta et tomt objekt og {y: string}.

Svar #1

Du kan markere y-egenskapen som valgfri ved å bruke ?:

function DD(x: { y?: string }) {
  if (x.y) {
   console.log("DD jingo");
  }
}

Svar #2

Ikke sikker på om dette er et godt mønster i TypeScript, men du kan eksplisitt fortelle TypeScript at verdien din av x er av typen { y: string } i if-setningen din:

function DD(x: { y: string } | {}) {
  if ((x as {y: string}).y) {
   console.log("DD jingo");
  }
}

Relaterte artikler