Visual Studio代码自动导入

rea*_*ers 48 typescript visual-studio-code angular

我正在从Webstorm迁移到Visual Studio Code.Webstorm中的表现非常糟糕.

Visual Studio代码对于找到我需要的依赖项并导入它们并不是很有帮助.到目前为止,我一直在手动执行此操作,但说实话,我宁愿等待15秒,以便webstorm找到并添加我的导入,必须手动挖掘它.

屏幕截图:找不到导入

我正在使用来自@ minko-gechev的angular2种子 https://github.com/mgechev/angular2-seed

我的baseDir中有一个tsconfig.json,如下所示:

    {
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "pretty": true,
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitUseStrict": false,
    "noFallthroughCasesInSwitch": true
  },
  "exclude": [
    "node_modules",
    "dist",
    "typings/index.d.ts",
    "typings/modules",
    "src"
  ],
  "compileOnSave": false
}
Run Code Online (Sandbox Code Playgroud)

我在我的src/client目录中有另一个看起来像这样:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "allowSyntheticDefaultImports": true
  }
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会有两个.angualr种子项目使用typescript gulp构建任务,所以我猜编译是不同的.

我能做些什么让vscode更有帮助?

rea*_*ers 34

我通过安装各种插件来实现这一点.这是我的扩展列表的屏幕截图.大部分时间,只要我输入类名,就会自行导入.或者,出现一个灯泡,您可以单击.或者你可以推F1,输入"import ...",那里也有各种选项.我有点使用它们.此外,实现接口的F1实现很有帮助,但并不总是有效.

在此输入图像描述

  • `TypeScript Importer` 运行良好,也适用于自定义 `rootDirs` 或使用 `tsconfig.json` 中的 `paths` 映射。它修复了 VS Code 损坏的自动导入。 (3认同)

Mat*_*ner 19

2018年.您不需要在Javascript和TypeScript中进行自动导入的任何扩展.

有两种类型的自动导入:添加缺少的导入快速修复,显示为错误的灯泡:

在此输入图像描述

自动导入建议.这些会在您输入时显示建议项目.接受自动导入建议会自动在文件顶部添加导入

在此输入图像描述

两者都应该使用JavaScript和TypeScript开箱即用.如果自动导入仍不适合您,请打开一个问题

  • 那是不正确的。如果我上面描述的方法不起作用,那就是一个错误,你应该提交一个错误报告。我是 VS Code 的 JS/TS 支持的维护者并实现了这些功能 (3认同)
  • 是的,无论您的项目的打字稿版本是否与 VScode 附带的版本匹配,自动导入在 Mac 上开箱即用,但在其他操作系统中,即 linux,情况并非如此,您必须指向工作区的版本正如我在回答中所解释的那样。 (2认同)
  • 有任何热键吗?我不想每次在Mac上导入`cmd + .`时都单击灯泡。 (2认同)
  • Mac 上的 @Tonio `cmd+.` (2认同)

Vươ*_*iện 18

在 tsconfig.app.json 中,标准的 Angular 10 应用程序具有:

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": []
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

一旦我将包含更改为:

  "include": [
    "src/**/*.d.ts",
    "src/**/*.ts"
  ]
Run Code Online (Sandbox Code Playgroud)

它对我有用 它对我有用

  • 非常感谢您,您的解决方案确实有效。事实证明,问题出在 tsconfig 首选项中,而不是在 IDE 中。 (3认同)

Exo*_* 4D 16

对于 JavaScript 项目:

  • 设置Check JS设置标志对我有用。
  • 无需jsconfig.json在项目中创建

在此输入图像描述

在此输入图像描述


Ali*_*ahi 12

我使用Auto Import插件很容易.

自动查找,解析并提供所有可用导入的代码操作和代码完成.适用于Typescript和TSX.

您可以在以下网址查看其工作原理:https://marketplace.visualstudio.com/items?itemName = steoates.autoimport

  • 不幸的是没有帮助我,仍然无法从 `node_modules` 中的模块自动导入:( (2认同)

ino*_*nik 11

如果最近有人遇到过这个问题,我发现我必须添加一个设置来使用我工作区的打字稿版本,以便自动导入工作。为此,请将此行添加到您的工作区设置中:

{
  "typescript.tsdk": "./node_modules/typescript/lib"
}
Run Code Online (Sandbox Code Playgroud)

然后,在 vscode 中打开一个打字稿文件,点击右下角的打字稿版本号。当顶部的选项出现时,选择“使用工作区版本”,然后重新加载 vscode

现在自动导入应该可以工作了。

  • @MattBierner 在问答网站的上下文中,这是一个很好的建议。当自动导入不起作用时,知道这是一个错误并不能解决他们的问题。我们不想等待针对这种极端情况的错误修复,而且我不会在有数万个问题的 repo 中提交另一个错误。最后我想指出 [这是 VScode 网站上规定的建议](https://code.visualstudio.com/docs/languages/typescript#_using-the-workspace-version-of-打字稿) (3认同)
  • 因此,当自动导入不起作用,并且我正在使用一堆扩展时,我如何知道使用 VS Code 而不是其中一个扩展来提交错误报告? (2认同)

Pet*_*los 6

我也遇到了同样的问题:Visual Studio Code(v.1.45.1)没有为我的打字稿项目之一自动添加导入。就我而言,问题是特定于项目的,不需要向 VS Code 添加任何扩展。

使固定:

  1. 添加"importHelpers": true到 tsconfig.json 文件的compileOptions 部分。
  2. 重新启动 VS 代码。

tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitOverride": true,
    "noPropertyAccessFromIndexSignature": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
...
  },
Run Code Online (Sandbox Code Playgroud)