В TypeScript можно типизировать параметры экшена следующим образом:
1. Через явное указание типа:
- Если экшен имеет параметры, можно объявить их в виде отдельного интерфейса или типа. Например, для экшена addUser
с параметрами id: number
и name: string
можно создать интерфейс UserActionParams
следующим образом:
interface UserActionParams { id: number; name: string; } const addUser = (params: UserActionParams) => { // ... };
2. Через использование типа 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
в редюсере для определения типа действия, а также для типизации соответствующих параметров.
3. Через комбинацию интерфейсов и строковых литералов:
- Другой способ типизации параметров экшена - использование комбинации интерфейсов и строковых литералов. Например, для экшена 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
в редюсере для определения типа действия и его параметров.
Вы можете выбрать любой из перечисленных выше подходов для типизации параметров экшена в зависимости от ваших предпочтений и требований вашего проекта. Оба подхода работают хорошо и помогают легко отслеживать типы данных в вашем коде.