generics - redux-toolkit createAction() typdefinition i typescript


Jag utforskar nyligen redux-toolkit-biblioteket men stöter på svårigheter med typdeklarationen av createAction-funktionen som visas nedan.

createAction returnerar en PayloadActionCreator som har en generisk typ av <ReturnType<PA>['payload'], T, PA>. Men vad betyder ReturnType<PA>['payload']?

export declare function createAction<PA extends PrepareAction<any>, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>

Svar #1

ReturnType<PA>['payload'] betyder payload-egenskapen hos objektet som returneras av prepare-funktionen - eftersom detta är signaturen för prepare-notationen.

Men detta borde inte bekymra dig. Den vanliga användningen är const actionCreator=createAction<PayloadType>('some/action/type').

Det alternativa notationssättet skulle vara prepare-notationen, i formen createAction('some/action/type', (payload: string) => ({ payload, meta: {something: "foo"}}).

Generellt, vänligen hänvisa till API-dokumentationen som har nästan alla användningsexempel i TypeScript. Du bör verkligen inte skriva fler typer än vad som finns där. (Och ja, det är inte många typer, det är i princip poängen ;) )