#typescript #redux
#typescript #сокращение
Вопрос:
Интерфейс для моего начального состояния выглядит так:
type List = (User | Post)[];
interface InitialState {
[index: string]: List | boolean;
users: User[];
posts: Post[];
loading: boolean;
}
Теперь в моем редукторе, если тип действия SPREAD_INSERT
равен, я меняю тип state[action.name]
(который хранится в переменной) на List
only, но ошибка говорит, что это должно быть List | boolean
.
if (action.type === 'SPREAD_INSERT') {
const list: List = state[action.name];
state[action.name] = [...list, ...action.payload];
return state;
}
List | boolean
не присваивается типуList
.
Мне нужно знать, как предотвратить эту ошибку. Спасибо!
Комментарии:
1.
state[action.name]
имеетList | boolean
тип, вы не можете присвоить его переменнойList
типа. На ваш вопрос нет общего ответа: вам нужно перепроектировать свои типы или код, чтобы не присваивать несовместимые значения.2. @zerkms я знаю, но что, если я хочу изменить только пользователей или сообщения, а не
loading
состояние? Если тип действияSPREAD_INSERT
равен , типstate[action.name]
должен быть массивом пользователей или сообщений, а не логическим значением. Вот почему я пытаюсь изменить его тип сList | boolean
наList
.