如何在TypeScript中指定定义为对象文字的箭头函数的类型?

汤玛斯·M。

我有以下对象:

  let route = {
    path: "/login",
    name: "login",
    component: Login,
    beforeEnter: (to, from, next) => {
      if (store.state.system.loggedIn) {
        next("/");
      } else {
        next();
      }
    },
  }

这为Vue路由器指定路由对象。问题出在函数beforeEnter,因为出现TS7006错误-所有参数隐式具有any类型。

我可以手动指定参数类型,但是已经存在该beforeEnter函数应该适合的确切类型-称为NavigationGuard,可以vue-router很好地导入它

当我尝试指定它时,问题就来了,我似乎找不到正确的语法。我发现了一个问题“ TypeScript中的对象文字中的类型定义”,该问题的答案建议指定整个对象的类型,或像这样强制转换:{ hasStarted: <boolean> null, ... }但将定义替换为

let route = {
    path: "/login",
    name: "login",
    component: Login,
    beforeEnter: <NavigationGuard> (to, from, next) => {
      if (store.state.system.loggedIn) {
        next("/");
      } else {
        next();
      }
    },
  }

似乎并不安抚编译器。

该怎么办?

为了避免与泛型混淆,您需要使用括号:

<NavigationGuard>((to, from, next) => {
  // …
})

要么:

((to, from, next) => {
  // …
}) as NavigationGuard

但是您应该能够在父对象上使用键入:

let route: RouteConfig = {
  path: "/login",
  name: "login",
  component: Login,
  beforeEnter: (to, from, next) => {
    if (store.state.system.loggedIn) {
      next("/");
    } else {
      next();
    }
  },
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在TypeScript中指定类型化的对象文字?

在TypeScript箭头函数中指定返回类型

如何在Typescript中为箭头函数创建通用类型

如何在 TypeScript 的函数声明中指定带有伞形类型缩小的返回类型?

在Typescript中的对象文字中指定值的类型?

如何在 Typescript 中指定代表 2 个函数的并集的类型

如何在类型提示中指定函数类型?

如何在ColdFusion 11中为list.each函数指定定界符?

如何在TypeScript中指定任何可更新的类型?

如何在等待中指定 Typescript Mongoose 模型类型

如何在类型化的球拍中指定void函数?

如何在函数参数中指定列表类型?

如何在异步Python函数中指定返回类型?

如何在map函数中指定数据类型?

如何在Typescript中指定由字段索引的对象数组?

如何在 TypeScript 中指定默认构造函数作为参数

如何在复合类型文字中指定 PostGIS 地理值?

Typescript箭头函数中的对象文字参数声明如何工作?

如何在函数中定义对象类型?

如何在PHP中指定类型?

如何在Lambda中指定参数类型?

如何在CSV中指定关系类型?

如何在字典中指定键值对的类型

函数的参数在Typescript中指定了几个函数类型

如何在TypeScript中为具有动态属性的对象定义类型

如何在Typescript接口中为函数定义void的返回类型?

如何在类中指定函数参数

如何在Groovy中指定字符文字?

如何在Java中指定字节文字?