文章

Typescript 找不到声明文件解决方法

我遇到的是 pinia-plugin-persist 找不到声明文件

1. 创建类型声明文件

首先,手动创建一个类型声明文件。在你的 src 目录下创建一个 types 文件夹,并在其中创建一个 pinia-plugin-persist.d.ts 文件,内容如下:

1
2
3
4
5
declare module 'pinia-plugin-persist' {
  import { PiniaPlugin } from 'pinia';
  const piniaPluginPersist: PiniaPlugin;
  export default piniaPluginPersist;
}

2. 更新 tsconfig.json

然后,在你的 tsconfig.json 文件中添加类型定义文件的路径。根据插件中的建议,应该在 compilerOptions 中添加 types 属性并将 pinia-plugin-persist 加入到数组中。确保你的 tsconfig.json 文件看起来像这样:

1
2
3
4
5
6
7
8
9
{
  "compilerOptions": {
    "typeRoots": ["./node_modules/@types", "./src/types"],
    "types": [
      "pinia-plugin-persist"
    ],
    // 其他的配置项...
  }
}

完整示例

你的项目结构可能类似于以下内容:

1
2
3
4
5
6
7
8
9
my-project/
├── src/
│   ├── types/
│   │   └── pinia-plugin-persist.d.ts
│   ├── main.ts
│   └── ...
├── tsconfig.json
├── package.json
└── ...

你的 tsconfig.json 文件的完整示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "sourceMap": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    },
    "typeRoots": ["./node_modules/@types", "./src/types"],
    "types": [
      "pinia-plugin-persist"
    ]
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

3. 使用 pinia-plugin-persist

在你的代码中,你可以像之前那样使用 pinia-plugin-persist,例如在 main.ts 文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import App from './App.vue';

// @ts-ignore
import piniaPluginPersist from 'pinia-plugin-persist';

const app = createApp(App);
const pinia = createPinia();
pinia.use(piniaPluginPersist);

app.use(pinia);
app.mount('#app');

这样配置之后,TypeScript 应该能够正确识别 pinia-plugin-persist,并且不再报错。如果还有问题,请检查你的 tsconfig.json 配置和类型声明文件的路径是否正确。

本文由作者按照 CC BY 4.0 进行授权