为什么Vue + typescript 的两个模块声明不能同时共存?
题目描述
- 创建了一个项目,如果Vue要使用Typescript话需要引入对Vue模块文件的类型支持(为Typescript)
- 同时,很多第三方ui库都有相应的$message等扩展需要挂载到Vue.prototype上,以为Typescript的类检查机制,它会检查当前组件(比如当前页是Home)上是否有,你能调用,但是实际上是home继承了Vue的prototype,所以Typescript并不能检查到而报错 * doesn't exist on type “home”
相关代码
解决方式都有
解决方式是:
解决.Vue
文件问题
declare module '*.vue' {
import Vue from "vue"
export default Vue //没有这个在main.ts 里import App.vue会报找不到对应模块的错,但是不影响实际使用
}
解决this.$message
问题
import VueRouter, { Route } from 'vue-router'
declare module "vue/types/vue" {
interface Vue {
$router: VueRouter
$route: Route
$APPMODE: boolean
}
}
但是这两个处理不能同时生效!即便是放在两个不同的文件里也不能生效,不清楚是因为ts配置问题还是有另外的声明方式
我的疑惑是它为什么不能同时生效,或者其它的解决办法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
项目太大或者项目久了没关IDE记得经常重启电脑和VScode,Vetur的异常报错,23307异常了