vuex this.$store,vue this.$api
本文主要介绍如何解决这个问题。Vue ts中的$store问题,有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。
目录
对此的解决方案。Vue ts中的$store问题Vue Practice中的一些常见错误ts mixin报告的错误扩展属性报告的错误TS中没有导入和导出的TS文件变量被认为是全局的。
Vue+ts里this.$store问题
在vuex,当我调用这个的时候。$store访问仓库状态,调用失败并报告了一个错误
解决办法
(此为任意)。$store
Vue实践ts中的一些常见错误
mixin报错
从“vue-property-decorator”导入{ Component,Prop,Vue,Mixins}
从导入httpminix./mixin/httpMixin
@组件({
mixins:[httpminix]
})
导出默认类HelloWorld扩展Vue {
public async getUser():promise void {
const r=awaiths . apiGet(/show )//hello world上没有API get方法
this . first name=JSON . stringify(r . data)
}
}
解决办法
从“vue-property-decorator”导入{ Component,Prop,Vue,Mixins}
从导入httpminix./mixin/httpMixin
@组件
//这里由继承Vue改为继承Minix函数,所以有提示。
导出默认类HelloWorld扩展Mixins(httpminix) {
public async getUser():promise void {
const r=await this.apiGet(/show )
this . first name=JSON . stringify(r . data)
}
公共安装(){
this.getUser()
}
}
扩展属性报错
现在我们在代码中写一个窗口,然后使用编辑器跳转到它的。d.ts文件。
//定义一个窗口类型为Window的全局变量
声明var窗口:Window;
//拦截窗口接口
界面窗口
因为这个接口是全局接口,所以我们可以声明一个同名的全局接口,TS会帮我们合并。
界面窗口{
//还可以添加
//字符串签名可以允许添加未知的名称属性。
[p:字符串]:任何
}
//因此您可以使用下面的代码而不报告错误
从“axios”导入axios
window.axios=axios
然后我们发现
Window.axios //这里没有属性提示。
然后我要挂载这个axios具体类型,当然也要想想,像下面这样。
从“axios”导入{AxiosStatic}
界面窗口{
axios: AxiosStatic
}
然后发现有错误,窗口上没有axios属性,就糊涂了。我试着改回来,还是报错了。
从“axios”导入{AxiosStatic}
界面窗口{
[p:字符串]:任何
}
我觉得两者的区别就是一个类型的引入,突然想到
TS中没有import和export的TS文件变量被视为全局
然后回过头来看一看原窗口的定义。
//注意lib.dom.d.ts这里没有导出
界面窗口
好吧,我想通了。因为我使用import导入了一个类型,所以我的自定义窗口接口在模块中变成了。这时候解决的办法当然是看内置语法能不能显示定义全局情况的变量。
//bingo,此时window.axios中有提示。
从“axios”导入{ axios static };
声明全局{
界面窗口{
axios: AxiosStatic
}
}
导出{ };
TS为我们提供了一种在模块中定义全局的方法,用来解决在模块中扩展全局的问题。
声明全局{
//您的类型代码
}
扩展Vue属性例子
从“vue”导入Vue
声明模块“vue/types/vue”{
界面Vue {
$ message:string;
}
}
这可以在组件类中访问。
这个。$messgae //这里有一个属性提示
总结:您需要扩展第三方声明文件。你需要确定它的命名空间和扩展变量实现的接口结构,然后复制接口,写一次自己的类型。
以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。