Учу typescript и пытаюсь сделать union тип для многих экшенов, но почему-то не подхватывается если у payload есть вложенность, как можно исправить ? в каком направлении документации к ts копать ?
export type TodoCH = {
type: TodosActionsTypes.CHANGE_TODO;
payload: {
checked: boolean;
id: number;
};
};
export type TodoAD = {
type: TodosActionsTypes.ADD_TODO;
payload: string;
};
type TT = TodoCH | TodoAD
function* changeTodo(action: TT) {
try {
yield call(() =>
axios.patch(`http://localhost:3100/todos/${action.payload.id}`, {
checked: !action.payload.checked,
})
);
yield put({
type: TodosActionsTypes.CHANGE_TODO_SUCCESS,
payload: action.payload.id,
});
} catch (e) {}
}
в данном случае выпадает 2 ошибки на id и checked:
// Property 'checked' does not exist on type 'string | { checked: boolean; id: number; }'.
// Property 'checked' does not exist on type 'string'.
// Property 'id' does not exist on type 'string | { checked: boolean; id: number; }'.
// Property 'id' does not exist on type 'string'.