У меня есть функция распознавателя, которая может иметь необязательный второй параметр с именем otherParams. Я хотел бы, чтобы Typescript проверял, вызывается ли функция, возвращаемая из createResourceThunk, с параметром otherParams, если он определен в функции разрешения. Как я могу это сделать? Minimal reproducable example here
export function createResourceThunk<T, Params, A, OtherParams extends A | never>(
actions: ResourceActions<T>,
resolver: (params: Params, otherParams: OtherParams) => Promise<T>
) {
return function(params: Params, callbacks: Callbacks<T>, otherParams: OtherParams) {
return async (dispatch: Dispatch) => {
dispatch(actions.startAction());
try {
const data = await (otherParams ? resolver(params, otherParams) : resolver(params));
...
} catch (error) {
...
}
};
};
}
В настоящее время он всегда ожидает третий параметр в вызове возвращаемой функции.
A | never
? Это немедленно уменьшается доA
несмотря ни на что. Кроме того, в вашем минимально воспроизводимом примере я бы предложил показать несколько вариантов использования вызоваcreateResourceThunk()
и вызова того, что он возвращает , с параметрамиresolver
, которые принимают/не принимают второй параметр, чтобы люди могли продемонстрировать, что должно происходить. В противном случае вы получите ответ, просто сделайтеotherParams
необязательным везде с?
. - person jcalz   schedule 03.02.2021