if
и switch
? Ну напиши так, если тебе это понятнее: function* changeTodo(action: TT) {
try {
switch (action.type) {
case TodosActionsTypes.CHANGE_TODO:
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,
});
break;
}
} catch (e) {
console.error(e);
}
}
switch
ты это сделаешь, через if
, или через танец живота - значения не имеет.payload
string
, что дальше?payload.checked
и payload.id
- undefined
. И call
и axios
и put
при этом выполнятся без ошибок, но с неверными значениями. Именно для защиты от такого как раз и придуман typescript. function* changeTodo(action: TT) {
try {
if (action.type === TodosActionsTypes.CHANGE_TODO) {
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) {
console.error(e);
}
}
string
и { checked: boolean; id: number; }
? Это два совершенно разных типа. Что-то не может быть одновременно и тем и тем.any
, специальный уникальный тип для затыкания дыр, который в обычном коде использовать нельзя. Другие же типы могут быть только более-менее конкретны. router.beforeEach(async (to, from, next) => {
if(!to.meta.requireAuth) {
return next();
}
if(store.getters['auth/isAuthorized']) {
// тут может быть проверка не устаревает ли токен по времени
// и запрос нового, но лучше если этим автоматически
// в фоновом режиме будет заниматься либа\самописный сервис
// if (await store.dispatch('auth/updateTokenIfNearExpired'))
return next();
}
return next('/login');
})
export default { ... }
ты экспортируешь простой объект без типа. Это не объект Vue это просто какой-то объект. В нём нет никаких стандартных методов и вообще ничего, кроме того что ты явно в нём написал.defineComponent
принимает на вход объект конкретного типа, а потому к нему применяются все прописанные для нужных типов условия.