H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【前端问题精选】为什么Vue + typescript 的两个模块声明不能同时共存?

题目描述

  1. 创建了一个项目,如果Vue要使用Typescript话需要引入对Vue模块文件的类型支持(为Typescript)
  2. 同时,很多第三方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配置问题还是有另外的声明方式

我的疑惑是它为什么不能同时生效,或者其它的解决办法是什么?

回答:

项目太大或者项目久了没关IDE记得经常重启电脑和VScode,Vetur的异常报错,23307异常了

本文地址:H5W3 » 【前端问题精选】为什么Vue + typescript 的两个模块声明不能同时共存?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址