Какую типизацию следует использовать для создателей связанных действий? - PullRequest
0 голосов
/ 04 июля 2019

Я использую Flow в своем проекте React + Redux. У меня есть компонент, который связан с хранением и использованием нескольких создателей действий. Я хочу установить тип для этого создателя действия в type Props.

Ранее я использовал только Function тип для такой ситуации. Так это выглядело так:

type Props = {
  onSomeEvent: Function,
}

Теперь я хочу заменить просто Function на что-то более конкретное, например () => void. Однако я не уверен, что именно вернет подключенную функцию.

Должно ли это быть просто () => void, если эта функция ничего не возвращает или поскольку она является создателем действия, она должна быть () => Action?

P.S. Я уже проверил документацию Flow об этом здесь: https://flow.org/en/docs/react/redux/

Однако, это говорит только о обычных Создателях Действий, не связанных с компонентом в качестве опоры.

1 Ответ

0 голосов
/ 05 июля 2019

Я бы порекомендовал следующий подход:

// actions.js

type OnSomeEventType = () => SomeAction;
export const onSomeEvent: OnSomeEventType = () => {
  // some implementation here
};

// Component.jsx

import type { OnSomeEventType } from 'actions.js';

type Props = {|
  onSomeEvent: OnSomeEventType,
|};

Так что вы можете явно указать, что ваш компонент зависит от некоторого интерфейса функций.

Если вы не хотите указывать такойзависимость (и это может быть хорошо в вашем случае), вы можете использовать что-то вроде этого:

type Props = {|
  onSomeEvent: () => mixed,
|}

Потому что обычно вам не важно, что внутри компонента возвращает создатель действия: вы просто запускаете его и забываете.

...