[typescript] Redux 액션과 리듀서의 타입 정의 방법
Redux는 상태 관리 라이브러리로, TypeScript와 함께 사용할 때 타입을 명확하게 정의하여 앱의 안정성을 높일 수 있습니다. 이번 글에서는 Redux 액션 및 리듀서의 타입을 어떻게 정의하는지 살펴보겠습니다.
Redux 액션의 타입 정의
Redux 액션은 type
필드를 가진 일반적인 객체입니다. 액션의 타입을 정의하기 위해 TypeScript에서는 enum
타입을 사용하는 것이 좋습니다.
enum ActionType {
INCREMENT = 'INCREMENT',
DECREMENT = 'DECREMENT',
}
type IncrementAction = {
type: ActionType.INCREMENT;
payload: number;
};
type DecrementAction = {
type: ActionType.DECREMENT;
payload: number;
};
type Action = IncrementAction | DecrementAction;
위의 예제에서 ActionType
은 INCREMENT
와 DECREMENT
두 가지 액션 타입을 정의하고, IncrementAction
과 DecrementAction
은 각각 payload
필드를 포함한 액션을 정의합니다. 마지막으로 Action
은 둘 중 하나의 액션을 나타내는 유니온 타입으로 정의됩니다.
Redux 리듀서의 타입 정의
Redux 리듀서는 상태와 액션을 받아 새로운 상태를 반환하는 함수입니다. 이때 TypeScript에서는 State
와 Action
의 타입을 명확히 정의하여 사용하는 것이 좋습니다.
type State = {
count: number;
};
const initialState: State = {
count: 0,
};
const reducer = (state: State = initialState, action: Action): State => {
switch (action.type) {
case ActionType.INCREMENT:
return { ...state, count: state.count + action.payload };
case ActionType.DECREMENT:
return { ...state, count: state.count - action.payload };
default:
return state;
}
};
위의 예제에서 State
는 상태의 타입을 정의하고, initialState
은 초기 상태를 나타냅니다. 그리고 reducer
함수는 State
와 Action
을 입력으로 받고, State
를 반환합니다.
이렇게 Redux 액션과 리듀서의 타입을 명확하게 정의함으로써 TypeScript에서 Redux를 안전하게 사용할 수 있습니다.