Как я могу ввести параметр вспомогательной функции с помощью WritableDraft из @reduxjs / toolkit?

#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. Да, они будут отличаться только в том случае, если ваше состояние содержит данные, доступные только для чтения.