Я использую TypeScript с Redux. Этот код работает нормально:
export type action =
| {
type: "do-other-thing";
name: string;
}
| {
type: "do-something";
index: number;
};
function reducer(state: state = initState, action: action): state {
switch (action.type) {
case "do-something":
if (action.index === 0) return state;
// More logic
case "do-other-thing":
// More logic
default:
return state;
}
Однако я хочу переместить регистры возврата из оператора switch в их собственные функции:
function doSomething(state: state, action : action): state {
if (action.index === 0) return state;
// more logic
}
function reducer(state: state = initState, action: action): state {
switch (action.type) {
case "do-something":
return doSomething(state, action);
case "do-other-thing":
// More logic
default:
return state;
}
Теперь функция doSomething
имеет TypeScript ошибка:
Свойство 'index' не существует для типа 'action'. Свойство 'index' не существует для типа '{тип: "что-то делать"; ширина: число; isLandscape: логическое значение; } '. ts (2339)
Я вижу, что TypeScript не знает, что из-за оператора switch объект action
будет иметь свойство index
. Есть ли способ, чтобы это осознавать?