当在使用TypeScript的项目中,如果出现类似"Could not find a declaration file for module 'xxx',这种报错说明没有找到该库的声明文件。在使用TypeScript时需要引入第三方非TypeScript开发的Javascript库时,我们就需要引入声明文件来告诉TypeScript如何来使用这些库。
这里有两种方法可以解决。
方法一:如果该库有对应的声明文件,只需要安装即可,例如可使用下列命令安装threejs声明文件:
npm install -D @types/three
有些官方库包里就提供的有声明文件即.d.ts文件,如果没有的可以到www.typescriptlang.org/dt/search?s… 上进行搜索,搜索到的声明文件都有提供安装命令,进行安装即可。
方法二:当该库没有对应的声明文件时,如dat.gui,则需要在shims-vue.d.ts文件中添加下列代码进行声明:
declare module "dat.gui";
如果项目中没有shims-vue.d.ts文件,需要自己进行创建,文件的完整内容如下:
/* eslint-disable */
declare module "*.vue" {
import type { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}
declare module "dat.gui";
注意:这样声明只是不让报错,如果想通过声明文件获得代码补全,参数提示等功能,需要自己编写类型声明,常用的语法有:
-
declare var声明全局变量 -
declare function声明全局方法 -
declare class声明全局类 -
declare enum声明全局枚举类型 -
declare namespace声明(含有子属性的)全局对象 -
interfacetype声明全局类型
具体的语法解释和编写可以参考:juejin.cn/post/684490…