Hvordan gjør jeg en Intersection-type valgfri i TypeScript


interface TypeA {
  a: string
  b: string
}

interface TypeB {
  c: string
}

nå vil jeg lage en TypeC, a og b er valgfritt, c er påkrevd.

interface TypeC {
  a?: string
  b?: string
  c: string
}

finnes det noen snarvei for å gjøre dette? for eksempel:

// type TypeC = TypeA? & TypeB

Jeg synes det er nyttig når TypeA er enorm

Svar #1

lekeplass

interface TypeA {
  a: string
  b: string
}

interface TypeB {
  c: string
}

// First way using extends and Partial
interface TypeC extends Partial<TypeA>, TypeB {
  // ...
}

// Second way using & and Partial
type TypeD = Partial<TypeA> & TypeB;

const variableC: TypeC = {
  c: '',
};

const variableD: TypeD = {
  c: '',
};

Relaterte artikler