Учу 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'.