В TypeScript можно типизировать параметры экшена следующим образом:
- Через явное указание типа:
- Если экшен имеет параметры, можно объявить их в виде отдельного интерфейса или типа. Например, для экшена
addUser
с параметрамиid: number
иname: string
можно создать интерфейсUserActionParams
следующим образом:
interface UserActionParams { id: number; name: string; } const addUser = (params: UserActionParams) => { // ... };
- Через использование типа
Action
из библиотеки redux:
- Если вы используете библиотеку redux, вы можете типизировать параметры экшена с помощью типа
Action
из пакетаredux
. Например, для экшенаaddUser
с параметрамиid: number
иname: string
:
import { Action } from "redux"; interface UserAction extends Action { type: "ADD_USER"; payload: { id: number; name: string; }; } const addUser = (id: number, name: string): UserAction => ({ type: "ADD_USER", payload: { id, name }, });
В этом случае, вы можете использовать UserAction
в редюсере для определения типа действия, а также для типизации соответствующих параметров.
- Через комбинацию интерфейсов и строковых литералов:
- Другой способ типизации параметров экшена - использование комбинации интерфейсов и строковых литералов. Например, для экшена
addUser
с параметрамиid: number
иname: string
:
interface AddUserAction { type: "ADD_USER"; id: number; name: string; } const addUser = (id: number, name: string): AddUserAction => ({ type: "ADD_USER", id, name, });
В этом случае, можно использовать AddUserAction
в редюсере для определения типа действия и его параметров.
Вы можете выбрать любой из перечисленных выше подходов для типизации параметров экшена в зависимости от ваших предпочтений и требований вашего проекта. Оба подхода работают хорошо и помогают легко отслеживать типы данных в вашем коде.