当在vue+ts项目中引入一个模块时,如果出现如下报错:
无法找到模块“vue-video-player”的声明文件。“C:/Users/cheer/Desktop/blog/front-end/node_modules/vue-video-player/dist/vue-video-player.js”隐式拥有 "any" 类型。\
尝试使用 `npm i --save-dev @types/vue-video-player` (如果存在),或者添加一个包含 `declare module 'vue-video-player';` 的新声明(.d.ts)文件
尝试安装无济于事时。不要皂基:
方案一:
用 vue-cli构建完TS项目后,会再项目src目录下生成shims-vue.d.ts这个文件
shims-vue.d.ts
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}
有了这个,在TS文件里引入vue文件时,需要加上.vue的后缀,这样就不会报找不到模块了
import Service from '@/service'
重点来了
当你想要扩展声明类型时,切记在src下也就是shims-vue.d.ts同级新增一个xx.d.ts文件(文件名随意,后缀一定是.d.ts)
例如
import Vue from "vue";
import VueRouter from "vue-router";
import { Route } from "vue-router";
import { Store } from "vuex";
import t from "@/i18n";
// 扩充
declare module "vue/types/vue" {
interface Vue {
$router: VueRouter;
$route: Route;
$store: Store<any>;
$t: t;
}
}
方案二:分类放置type文件
1.在根目录创建types 文件夹,并创建任意名字的文件,但是结尾必须是.d.ts
2.修改tsconfig.json配置
增加如下配置
重启项目,就可以了。
tips:当然这样做的好处是1.统一管理d.ts 2.这个d.ts中可以写入其他东西。