使用带有打字稿的 Vuex 4,类型“ComponentPublicInstance”上不存在属性“$store”
Posted
技术标签:
【中文标题】使用带有打字稿的 Vuex 4,类型“ComponentPublicInstance”上不存在属性“$store”【英文标题】:Property '$store' does not exist on type 'ComponentPublicInstance' using Vuex 4 with typescript 【发布时间】:2021-03-22 00:42:46 【问题描述】:我有一个项目,我在 vuex 中使用 typescript 和 vue,我在 VSCode 上遇到此错误:
Property '$store' does not exist on type 'ComponentPublicInstance<, , , errors(): any; , eliminarError(error: string): void; , EmitsOptions, , , false, ComponentOptionsBase<, , , errors(): any; , eliminarError(error: string): void; , ... 4 more ..., >>'
我阅读了the documentation,它说我必须添加一个包含此内容的 d.ts 文件:
// vuex.d.ts
import ComponentCustomProperties from 'vue'
import Store from 'vuex'
declare module '@vue/runtime-core'
// declare your own store states
interface State
count: number
// provide typings for `this.$store`
interface ComponentCustomProperties
$store: Store<State>
但随后 VSCode 比 'ComponentCustomProperties' is defined but never used
抱怨,它仍然显示我提到的第一个错误
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我在VSCode上也遇到了这个错误,已经解决了。
// vuex.d.ts
import ComponentCustomProperties from 'vue'
import Store from 'vuex'
declare module '@vue/runtime-core'
// declare your own store states
interface State
count: number
// provide typings for `this.$store`
interface ComponentCustomProperties
$store: Store<State>
按照官方文档的配置没有生效。重启VSCode后,终于生效了。
【讨论】:
【参考方案2】:将/* eslint-disable */
添加到 shims-vuex.d.ts 文件的顶部
【讨论】:
以上是关于使用带有打字稿的 Vuex 4,类型“ComponentPublicInstance”上不存在属性“$store”的主要内容,如果未能解决你的问题,请参考以下文章
使用带有打字稿的 react-bootstrap Form.Label 时出现类型错误
如何修复 VSCode 中的“‘CombinedVueInstance’类型上不存在属性 XX”错误? (带有打字稿的Vue)