Redux Saga использует эффект Call с машинописным шрифтом - PullRequest
1 голос
/ 20 октября 2019

В настоящее время я использую Redux-сагу и машинопись. Но я не знаю, как использовать call эффект с generic function type в Typescript.

Например. У меня есть функция с универсальным типом, как это:

function identity<T>(arg: T): T {
    return arg;
}

И, в саге, я ожидаю код, подобный этому:

...
const result = yield call(identity<string>, "myString")
...

Однако компилятор показывает ошибки. Конечно, я могу написать

const result = yield call(identity, "myString")

Но это не мое ожидание. Как я могу узнать, есть ли способ / синтаксис, чтобы удовлетворить мои ожидания выше?

1 Ответ

0 голосов
/ 21 октября 2019

Возможное решение - определить тип функции identity и использовать ее для специализации call вызова.

type identityFunction<T> = (agr: T) => T;

И предоставить тип для call function

yield call<identityFunction<string>>(identity, 'myString');

Теперь, если вы попытаетесь вызвать yield call<identityFunction<string>> с неправильными аргументами (также если сигнатура функции идентификации не будет соответствовать типу identityFunction<T>), TypeScript отобразит ошибку.

...