В TypeScript, как мне ввести аргументы функции, но не возвращаемое значение? - PullRequest
0 голосов
/ 15 октября 2018

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

Во многих местах я пишу такие функции:

const selectThing = (store: IStore) => store.path.to.thing;

const fetchThing = (thingId: string) => (dispatch: Dispatch<IStore>, getState: () => IStore) => {
  // fetch a thing by id and handle the result

  return result;
}

Особенно во втором примере, аннотации ввода для второй функции занимают много места, и я хотел бы написать интерфейс функции, который обрабатывает ввод аргументов.

type StoreSelector<T = any> = (store: IStore) => T;
type ThunkDispatch<T = any> = (dispatch: Dispatch<IStore>, getState: () => IStore) => T;

Приведенные выше варианты печати решают проблему необходимости вручную вводить параметры каждыйвремя, но они потребуют, чтобы я вручную набрал возвращаемое значение функций, которые раньше работали автоматически.

Есть ли способ набрать аргументы функции, но пусть typcript автоматически определит возвращаемое значение функциитело

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете использовать функцию для получения вывода для типа возвращаемого значения и вывода для типов параметров.

function createThunkDispatch<T>(fn: (dispatch: Dispatch<IStore>, getState: () => IStore) => T) {
    return fn;
} 

// const fetchThing: (thingId: string) => (dispatch: Dispatch<IStore>, getState: () => IStore) => string
const fetchThing = (thingId: string) => createThunkDispatch((dispatch, getState) => {
    // fetch a thing by id and handle the result

    return "result";
});
...