如何防止(卸载)TypeScript 安装并将它自己的 @types 引用到 AppData\Local

Max*_*ich 4 types npm node-modules typescript reactjs

我遇到了一个令人困惑的问题,似乎TypeScript是将自己的副本安装React到自己的全局缓存中(不确定它叫什么?假设它是什么)并在我的项目中引用它。

具体来说,我最终得到了两个对 React 的引用,它位于我的项目的根目录中

C:\MyProject\node_modules\@types\react
Run Code Online (Sandbox Code Playgroud)

然后在另一个参考

C:\Users\MyUserName\AppData\Local\Microsoft\TypeScript\3.0\node_modules\@types\react
Run Code Online (Sandbox Code Playgroud)

如何控制和卸载最终出现在 TypeScriptlocal文件夹中的引用?我在我的项目中做了什么可能导致这个二级引用?

这是我的 tsconfig.json 文件的样子:

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",

    "target": "es5",
    "sourceMap": true,
    "jsx": "react",
    "lib": [ "es6", "dom" ],
    "removeComments": true,
    "typeRoots": [
      "/Types/"
    ]
  },
  "compileOnSave": false,
  "exclude": [
    "/node_modules/",
    "/bin",
    "/obj"
  ]
}
Run Code Online (Sandbox Code Playgroud)

Dom*_*and 7

这些问题的出现取决于您的 IDE,并且可以通过不同的方式解决

对于 Visual Studio 2019:

  1. 转到“选项”->“文本编辑器”->“JavaScript/TypeScript”->“项目”,然后取消选中“TypeAcquisition for Javascript” 选项菜单配置

  2. 关闭 VisualStudio

  3. 删除 C:\Users\ [用户名] \AppData\Local\Microsoft\TypeScript\ [VersionOfConcern]下的文件夹

  4. 重新加载解决方案,您的错误应该消失

VS Code 用户应参考 tsconfig.json 文件选项:

{
[...],
"typeAcquisition": {"enable": false}
}
Run Code Online (Sandbox Code Playgroud)

我没有测试 VS Code 的解决方案。


Mat*_*hen 5

将类型声明下载到的C:\Users\MyUserName\AppData\Local\Microsoft\TypeScript\3.0\node_modules功能称为“自动类型获取”,适用于 JavaScript 项目。由于您的项目有一个tsconfig.json文件,因此自动类型获取应处于非活动状态,并且不应使用任何先前下载的文件;如果您有证据表明它们正在被使用并导致您的项目出现问题,请更新问题。假设您使用的是 Visual Studio Code,您可以通过将typescript.disableAutomaticTypeAcquisition设置设置为来禁用自动类型获取true