如何指定在TypeScript中定义为对象文字的箭头函数的类型?
我的目标如下:如何指定在TypeScript中定义为对象文字的箭头函数的类型?,typescript,vue-router,Typescript,Vue Router,我的目标如下: let route = { path: "/login", name: "login", component: Login, beforeEnter: (to, from, next) => { if (store.state.system.loggedIn) { next("/"); } else { next(); } }, } 这为Vue路由器指定路由
let route = {
path: "/login",
name: "login",
component: Login,
beforeEnter: (to, from, next) => {
if (store.state.system.loggedIn) {
next("/");
} else {
next();
}
},
}
这为Vue路由器指定路由对象。问题在于函数beforenter
,因为我得到一个TS7006错误-所有参数都隐式地具有任何类型
我可以手动指定参数类型,但是已经存在了beforenter
函数应该适合的确切类型-它被称为NavigationGuard
,我可以从vue路由器导入它
当我试图指定它时,问题来了,我似乎找不到正确的语法。我发现了一个问题“”,其中一个答案建议要么指定整个对象的类型,要么像这样强制转换它:{hasStarted:null,…}
但将定义替换为
let route = {
path: "/login",
name: "login",
component: Login,
beforeEnter: <NavigationGuard> (to, from, next) => {
if (store.state.system.loggedIn) {
next("/");
} else {
next();
}
},
}
let route={
路径:“/login”,
名称:“登录”,
组件:登录,
beforeEnter:(到、从、下一个)=>{
if(store.state.system.loggedIn){
下一个(“/”);
}否则{
next();
}
},
}
似乎不能安抚编译器
怎么办?为了避免与的混淆,您需要括号:
<NavigationGuard>((to, from, next) => {
// …
})
但您应该能够在父对象上使用键入:
let route: RouteConfig = {
path: "/login",
name: "login",
component: Login,
beforeEnter: (to, from, next) => {
if (store.state.system.loggedIn) {
next("/");
} else {
next();
}
},
}
let route: RouteConfig = {
path: "/login",
name: "login",
component: Login,
beforeEnter: (to, from, next) => {
if (store.state.system.loggedIn) {
next("/");
} else {
next();
}
},
}