Не уверен, если это то, что вы ищете, но я попробую:
Если вы используете пакет redux-actions
, тип возвращаемого значения login
(функция, созданная вызовомcreateAction
) будет Action<Payload>
. Payload
- это параметр типа, который выводится из типа возвращаемого значения переданного в обратном вызове prepare
.
Действие (из действий приставки):
export interface BaseAction {
type: string;
}
export interface Action<Payload> extends BaseAction {
payload?: Payload;
error?: boolean;
}
Если вы не можете использовать явный, известный тип для возвращаемого типа обратного вызова prepare
, Payload
может быть выведен следующим образом (предполагается, что string
type для user + pw в примере):
type InferPayload<T> = T extends Action<infer I> ? I : never
/*
type Payload = {
payload: {
username: string;
password: string;
};
}
*/
type Payload = InferPayload<ReturnType<typeof login>>
Таким образом, в целом Action<Payload>
будет иметь такой тип:
{
payload?: {
payload: {
username: string;
password: string;
};
} | undefined;
error?: boolean | undefined;
type: string;
}
Детская площадка