Vue+ts里面this.$store问题怎么解决
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍了Vue+ts里面this.$store问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue+ts里面this.$store问题怎么解决文章都
千家信息网最后更新 2025年02月02日Vue+ts里面this.$store问题怎么解决
这篇文章主要介绍了Vue+ts里面this.$store问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue+ts里面this.$store问题怎么解决文章都会有所收获,下面我们一起来看看吧。
Vue+ts里this.$store问题
vuex里面我调用this.$store访问仓库state时,调用失败报错
解决办法
(this as any).$store
Vue实践ts中的一些常见错误及解决
mixin报错
import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator'import httpminix from '../mixin/httpMixin'@Component({ mixins:[httpminix]})export default class HelloWorld extends Vue { public async getUser() : Promise{ const r = await this.apiGet('/show') //HelloWorld上没有apiGet方法 this.firstName = JSON.stringify(r.data) }}
解决方案
import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator'import httpminix from '../mixin/httpMixin'@Component// 这里从继承Vue改成继承Minix函数,这样就有提示了export default class HelloWorld extends Mixins(httpminix) { public async getUser() : Promise{ const r = await this.apiGet('/show') this.firstName = JSON.stringify(r.data) } public mounted() { this.getUser() }}
扩展属性报错
我们现在代码里写一段window,然后用编辑器跳转到其.d.ts文件中去
// 定义一个全局变量 window 类型为Windowdeclare var window: Window;// 截取Window接口interface Window
由于这个接口为全局接口,所以我们可以声明一个同名全局全局接口,TS会帮我们合并
interface Window { // 也可以添加 // 字符串签名 可以允许添加未知名称属性 [p: string]: any}// 这样就可以使用如下代码不报错import axios from 'axios'window.axios = axios
然后我们发现
window.axios //这里没有属性提示
然后我想把这个axios具体类型挂载上去,当然一想,像下面这样做
import {AxiosStatic} from 'axios'interface Window { axios: AxiosStatic}
然后发现报错了,window上没有axios这个属性,就很疑惑,尝试改回去,仍然报错
import {AxiosStatic} from 'axios'interface Window { [p: string]: any}
我就想这两个区别就是导入了一个类型,突然想到
TS中没有import和export的TS文件变量被视为全局
然后回去一看原本Window的定义
// 注意lib.dom.d.ts这里没有exportinterface Window
好的,想通了,就是因为使用import导入了一个类型,导致我自定义Window接口变成了模块内的,这时候的解决方案当然是看看内置语法有没有能显示定义全局性的变量
// bingo 此时window.axios有提示啦import { AxiosStatic } from "axios";declare global { interface Window { axios: AxiosStatic }}export { };
TS为我们在模块定义全局提供了一个方式,用于解决在模块中扩展全局
declare global { // your type code}
扩展Vue属性例子
import Vue from 'vue'declare module "vue/types/vue" { interface Vue { $message: string; }}
在组件类中可以这样访问
this.$messgae //这里有属性提示
总结:需要扩展一个第三方声明文件,需要确定其命名空间以及扩展变量实现的接口结构,然后复制该接口写一次自己的类型即可
关于"Vue+ts里面this.$store问题怎么解决"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Vue+ts里面this.$store问题怎么解决"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
全局
接口
属性
问题
类型
变量
提示
文件
模块
知识
代码
内容
就是
方案
篇文章
解决方案
两个
仓库
价值
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
苹果12苹果服务器验证失败
计算机网络技术5g网络方向
做软件开发越来越
坎公骑冠剑服务器有几个
主播与服务器之间怎么交流
参考数据库的数据模型和数据特征
机智网络安全龙头
辐射76 游玩中提示服务器关闭
windows服务器端访问许可
网络安全需要的五个技能
手机能代替打印服务器吗
我的世界ice服务器上新闻
用友服务器可以用自己的电脑吗
一个安全的ce服务器怎么配置
网络安全审查办法自起实施实行
c 数据库线程安全
涉密信息网络技术中心
湖南省大专学计算机软件开发
服务器管理接口
罪恶都市联机怎么搜服务器
电话卡显示服务器断开怎么回事
新学术外文期刊数据库
netflix无法访问服务器
湖南专业网络技术推广
东京软件开发工资水平
2017新专业 网络安全
鉴于近期网络安全
mysql数据库配置文件包
营口住宿软件开发
数据库数据结构