使用 Typescript 的“计算”类型上不存在属性 XXX

Posted

技术标签:

【中文标题】使用 Typescript 的“计算”类型上不存在属性 XXX【英文标题】:Property XXX does not exit on type 'Computed' using Typescript 【发布时间】:2022-01-03 05:25:56 【问题描述】:

代码运行并在浏览器的控制台中打印出 true。但是在我的本地服务器上,我收到错误Property 'authorities' does not exist on type 'Computed'. 我是 Typescript 和 Vuex 的新手。我检查了一下,isAdmin 是一个具有数组权限的对象

这是我的代码

export default 
    name: "UserSettingsTabs",
      computed: 
    ...mapGetters(
      preferences: 'tab/preferences',
      administrations: 'tab/administrations',
      isAdmin: 'auth/currentUser'
    ),
    isUserAdmin() : boolean
      console.log(this.isAdmin.authorities.includes('Admin'));
      return this.isAdmin.authorities.includes('Admin');
       , 

【问题讨论】:

【参考方案1】:

这是因为您使用的是mapGetters,它将isAdmin 解析为<Computed>

这是here 讨论的一些可能的解决方案

如果您对简单的解决方案感到满意,您可以将this.isAdmin as IIsAdmin 与您的自定义界面或类型一起使用。

您也可以使用从 vuex 中提取值的计算函数,而不是使用 mapGetters。

【讨论】:

还有,我想知道pinia是否更优雅地解决了这个问题?pinia.esm.dev/core-concepts/…

以上是关于使用 Typescript 的“计算”类型上不存在属性 XXX的主要内容,如果未能解决你的问题,请参考以下文章

Vue CLI 3 typescript - 类型“Vue”上不存在属性“x”

VueJS + Typescript:类型上不存在属性

如何使用jsdom和typescript防止“属性'...'在'Global'类型上不存在”?

使用 Typescript 时如何停止“类型 JQuery 上不存在属性”语法错误?

TypeScript:“文档”类型上不存在属性“slug”

使用 React Typescript 的状态:类型'IntrinsicAttributes & IntrinsicClassAttributes 上不存在属性