Выбор определенных типов только из [index: string]

#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 .