一起使用pnpm和Typescript进行类型检查的问题

时间:2018-08-02 21:30:35

标签: typescript types symlink typechecking pnpm

tutorial理解,pnpm创建符号链接的.registry.npmjs.org,其他条目指向node_modules下。我的项目在typescript上,我有@types可以在node_modules中键入内容。但是此@types也包含在node_modules/.registry.npmjs.org/@types中。所以我遇到了类似的错误:

/node_modules/.registry.npmjs.org/@types/jquery/3.3.5/node_modules/@types/jquery/index.d.ts(32,14): error TS2300: Duplicate identifier 'jQuery'.

...和

/node_modules/@types/jquery/index.d.ts(28,14): error TS2300: Duplicate identifier 'jQuery'.

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "lib": [
      "es5",
      "dom",
      "es2015.promise"
    ],
    "experimentalDecorators": true,
    "sourceMap": true,
    "allowSyntheticDefaultImports": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "scripts",
    "src/contracts"
  ]
}

有什么想法要解决吗?

1 个答案:

答案 0 :(得分:1)

对我来说"typeRoots": ["./node_modules/@types"]有效。

默认情况下,tsc 将在所有 node_modules/@types 文件夹中查找类型。

您可以通过调用 tsc --listFiles 来测试包含哪些文件。

我认为因为这个文件是由 typescript 本身包含的,那么它也会包含 pnpm 存储库 node_modules/.pnpm/@types 中的所有文件。

xxx/node_modules/.pnpm/typescript@3.9.7/node_modules/typescript/lib/lib.es5.d.ts

就我而言,我有多个版本的 React 可供阅读。