#typescript #redux #reducers #redux-toolkit #immer.js
#typescript #redux #редукторы #redux-toolkit #immer.js
Вопрос:
Я использую @reduxjs/toolkit
и хотел бы написать вспомогательную функцию для одного из моих редукторов среза.
Что-то, что я бы назвал так:
reducers: {
MY_REDUCER(draft, action) {
helperFunction(draft);
}
}
Это будет вспомогательная функция:
const helperFunction= (
draft: WritableDraft<MY_STATE_TYPE>
) : void => {
// CHANGE draft
};
Но я не могу ввести draft
параметр. Похоже, что этот WritableDraft
тип недоступен @reduxjs/toolkit
. Возможно ли это? Как я могу это сделать?
@reduxjs/toolkit
использует WritableDraft<MY_STATE_TYPE>
Ответ №1:
Похоже, что либо immer недавно переименовал это, либо ваша IDE просто пропускает внутреннее имя immer. Попробуйте Draft
тип, который на самом деле использует RTK.
Комментарии:
1. Да,
Draft
кажется, работает. Это также работает, если я использую свой тип состояния напрямую. Поскольку эти типы «идентичны», насколько они содержат свойства, которые мне разрешено обновлять. Но я буду использоватьDraft
его для большей согласованности. Спасибо.2. Да, они будут отличаться только в том случае, если ваше состояние содержит данные, доступные только для чтения.