Finnes det en måte å gjøre spread-operasjoner med TypeScript-generics på?


Jeg har en funksjon som tar inn et objekt og slår det sammen med et annet objekt. Jeg vil gjerne kunne ha en generisk T som representerer objektet som tas inn slik at Typescript vet at utdataobjektet inneholder de samme nøklene, men også har de nye nøklene.

export interface ObjFactory<T> {
  someNewProp: string
  otherNewProp: string
  ...T
}

export interface InputObject {
  inputProp: string
}

Da ville utdataobjektet bli representert som

{
  someNewProp: string
  otherNewProp: string
  inputProp: string
}

Finnes det en måte å oppnå noe lignende dette på?

Svar #1

Du kunne bruke Type Intersection for å oppnå dette hvis du er komfortabel med å eksportere types i stedet for grensesnitt.

export type ObjFactory<T> = T & {
  someNewProp: string
  otherNewProp: string
}

export interface InputObject {
  inputProp: string
}

Den eneste ulempen med type så vidt jeg vet er at klasser og grensesnitt ikke kan utvide dem.

Relaterte artikler