📜  undefined(undefined,undefined) 中的 undefinedTypeScript 错误:找不到“历史”的类型定义文件.该文件在程序中,因为:隐式类型库“历史”TS2688 的入口点 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:05:43.083000             🧑  作者: Mango

TypeScript 错误:找不到“历史”的类型定义文件

在使用 TypeScript 进行开发时,有时会遇到找不到某个依赖库的类型定义文件的错误。例如在某个项目中使用了名为“历史”的库,但 TypeScript 却无法找到其类型定义文件,报错如下:

error TS2688: Cannot find type definition file for 'history'.

这种错误通常是因为 TypeScript 默认只会在 @types 文件夹下寻找类型定义文件,而该依赖库的类型定义文件没有被放置在该文件夹下。

如果我们已经安装了该依赖库,可以尝试手动安装其类型定义文件:

npm install @types/history

或者,如果该库虽然没有官方提供的类型定义文件,但我们自己编写了一个类型定义文件,那么我们需要在 tsconfig.json 文件中添加以下配置:

{
  "compilerOptions": {
    ...
    "typeRoots": ["./types"]
  }
}

其中 typeRoots 配置项表示告诉 TypeScript 还有其他的类型定义文件需要被扫描,这里我们将其指向了 ./types 文件夹,表示在该文件夹下寻找类型定义文件。

除了以上两种情况外,我们也可以自己编写一个类型定义文件,并将其放置在 @types 文件夹下,以便 TypeScript 能够找到它。下面是一个示例:

declare module 'history' {
  export interface Location {
    // ...
  }
  export interface Router {
    // ...
  }
  // ...
}

该类型定义文件表示针对 history 库的类型定义,其中声明了 LocationRouter 等接口。我们将该文件保存为 history.d.ts,并将其放置在 @types 文件夹下,即可让 TypeScript 能够自动识别并使用该类型定义文件。

总之,当 TypeScript 在寻找某个依赖库的类型定义文件时报错时,我们需要先确定是哪种情况造成的,并采取相应的解决方法。