Typescript samma härledda typ men alla valfria nycklar


Är det möjligt att automatiskt härleda detta gränssnitt:

interface OverrideParamType {
  foo?: FooType
  bar?: BarType
}

från den här

interface ParamType {
  foo: FooType
  bar: BarType
}

Användningen är i funktioner som slutar med:

return Object.assign ( {}, baseParams, overrideParams )

Svar #1

Sedan TypeScript 2.1 kan du göra:

interface ParamType {
    foo: FooType
    bar: BarType
}

type PartialParamType = Partial<ParamType>;

Definitionen av Partial är:

type Partial<T> = {
    [P in keyof T]?: T[P];
};

Mer om det i: Mappade typer

Ett exempel i lekplatsen.

Observera att det inte finns något behov av att definiera Partial-typen själv, den är en del av lib.d.ts.

Relaterade artiklar