Vue 3使用Typescript注入

马库斯·G。

我使用了新的Vue 3 Composition API,并为反应性数据编写了一个“存储”。

const state = reactive<State>({
  accessToken: undefined,
  user: undefined,
});

export default {
  state: readonly(state),
}

在创建应用程序时,我为所有组件提供商店:

const app = createApp(App)
  .provide("store", store)
  .use(IonicVue)
  .use(router);

最后,在组件/视图中,我注入了商店以使用它。

export default defineComponent({
  name: "Home",
  inject: ["store"],
  components: {
    IonContent,
    IonHeader,
    IonPage,
    IonTitle,
    IonToolbar,
    IonButton,
  },
  computed: {
    email() {
      return this.store.state.user.email;
    },
  },
});
</script>

不幸的是,Typescript不喜欢this.store计算属性中使用的方式email()

并说

属性'store'在类型'ComponentPublicInstance <{},{},{},{email()上不存在:any; },{},EmitsOptions,{},{},false,ComponentOptionsBase <{},{},{},{email():任意;},{},ComponentOptionsMixin,ComponentOptionsMixin,EmitsOptions,字符串,{} >>'

我的意思是一切正常,当我删除lang="ts"<script/>标签,但没有显示错误。关于如何解决此问题或它的特殊含义的任何建议?

提前致谢!

布萨吉拉·卜拉欣(Boussadjra Brahim)

我建议在没有指定inject子组件的情况下将store用作全局属性,因为provide / inject可能会引起一些反应性警告:

const app = createApp(App)
  .use(IonicVue)
  .use(router);
app.config.globalProperties.store= store;

declare module '@vue/runtime-core' {
  interface ComponentCustomProperties  {
       store:any // replace it with the right type
     }
   }

然后直接使用它:

export default defineComponent({
  name: "Home",
  components: {
  ...
  },
  computed: {
    email() {
      return this.store.state.user.email;
    },
  },
});
</script>

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用TypeScript在Vue.js中解析注入的实例

TypeScript / Vue 3:注入变异函数导致 TypeScript 错误“对象类型为‘未知’”

在Vue 3和Typescript中使用globalProperties

Vue3 CSS可变注入

通过Vue 3提供注入设置功能

在 Vue 3 + TypeScript + Options API 中使用 refs

如何使用自定义 Vue 实例注入 Vue 组件

Vue 3 - 如何在 v-for 循环中使用注入列表?

Vue JS Typescript组件找不到注入实例属性

在 vue + typescript 中使用 mapState

在Typescript Vue中使用mapGetters

如何集成 Vue3 + Stripe + Typescript?

Vue 3 Typescript ComputedRef 問題

帶有 Typescript 注入的 Vue 3 無法按預期工作。傳播類型只能從對像類型創建

使用Vue.js注入HTML之后的事件处理

使用注入加载器模拟 Vue 类组件方法

使用vue.js和axios处理注入的HTML

在 Vue 3 中使用 vuex

使用Typescript类时的Vue反应性

在vue模板中使用Typescript静态方法

使用 Vue、Typescript 和 Webpack 构建库

Vue无法使用Typescript加载SignalR Core

如何使用 Typescript 在 Vue 3 中获取输入的“已检查”状态

Vue 3建议使用TypeScript TSConfig编译器选项TARGET设置吗?

如何使用Typescript在Vue CLI3中嵌套对象数据?

如何在带有 Typescript 的 Vue3 组件中使用 Vuex

如何使用Vue类组件访问VueJS 3和Typescript中的HTML ref?

如何在Vue 3中使用Typescript创建全局自定义指令

如何在本地文件中导入数组以在 Vue 3 TypeScript 项目中使用?