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
принимает на вход объект конкретного типа, а потому к нему применяются все прописанные для нужных типов условия.
string
и{ checked: boolean; id: number; }
? Это два совершенно разных типа. Что-то не может быть одновременно и тем и тем.Единственный тип который ведёт себя как любой(точнее как все типы одновременно) - это
any
, специальный уникальный тип для затыкания дыр, который в обычном коде использовать нельзя. Другие же типы могут быть только более-менее конкретны.