Visual Studio Code中是否有自动导入功能?

时间:2015-05-03 14:14:44

标签: visual-studio-code

是否有任何快捷方式可以让我自动生成我的打字稿导入?就像点击类型名称旁边的ctrl +空格并将导入声明放在文件顶部一样。如果没有,那么intellisense用于填写模块参考路径,以便我不必手动完成它?我真的很想使用vscode,但不得不为打字稿做手动导入会让我感到害怕。

4 个答案:

答案 0 :(得分:2)

我相信该插件名为" TypeScript Importer"完全按照你的意思行事:https://marketplace.visualstudio.com/items?itemName=pmneo.tsimporter

  

自动搜索工作区文件中的TypeScript定义,并将所有已知符号作为完成项提供,以允许代码完成。

  

enter image description here

使用它您可以真正使用 Ctrl + Space 来选择您想要导入的内容。

您可以从 Ctrl + Shift + X 菜单中找到并安装它,或者只需在快速打开菜单中粘贴ext install tsimporter Ctrl + P 打开。

答案 1 :(得分:1)

我知道Visual Studio的解决方案(不是Visual Studio Code ,我正在使用2015社区版,这是免费的),但它需要一些设置和编码 - 但是,我发现结果是足够的。

基本上,在Visual Studio中,使用Web-Essentials扩展时,.ts文件可以拖动到活动文档中以自动生成相对引用路径注释:

/// <reference path="lib/foo.ts" />

我们当然可以用它来擦除它,因为它是我们需要的import语句,而不是引用注释。

出于这个原因,我最近为Visual Commander编写了以下命令片段,但它也应该很容易适应其他用例。使用Visual Commander,将所需的导入拖动到打开的文档中,然后运行以下宏:

using EnvDTE;
using EnvDTE80;
using System.Text.RegularExpressions;

public class C : VisualCommanderExt.ICommand
{
    // Called by Visual Commander extension.
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    {
        TextDocument doc = (TextDocument)(DTE.ActiveDocument.Object("TextDocument"));
        var p = doc.StartPoint.CreateEditPoint();
        string s = p.GetText(doc.EndPoint);

        p.ReplaceText(doc.EndPoint, this.ReplaceReferences(s), (int)vsEPReplaceTextOptions.vsEPReplaceTextKeepMarkers);
    }

    // Converts "reference" syntax to "ES6 import" syntax.
    private string ReplaceReferences(string text)
    {
        string pattern = "\\/\\/\\/ *<reference *path *= *\"([^\"]*)(?:\\.ts)\" *\\/>";

        var regex = new Regex(pattern);
        var matches = Regex.Matches(text, pattern);

        return Regex.Replace(text, pattern, "import {} from \"./$1\";");
    }
}

运行此代码段时,活动文档中的所有引用注释都将替换为import语句。上面的例子转换为:

import {} from "./lib/foo";

答案 2 :(得分:1)

这已在version 1.18中发布。

从发行说明:

JavaScript和TypeScript的自动导入

使用JavaScript和TypeScript的自动导入加快编码速度。建议列表现在包括当前项目中的所有导出符号。刚开始输入:

Global symbols are now shown in the suggestion list

如果您从其他文件或模块中选择其中一个建议,VS Code将自动为其添加导入。在此示例中,VS Code将Hercules的导入添加到文件顶部:

After selecting a symbol form a different file, an import is added for it automatically

自动导入需要TypeScript 2.6+。您可以通过设置"typescript.autoImportSuggestions.enabled": false来停用自动导入。

答案 3 :(得分:0)

tsconfig.json文件中的files属性允许您在整个项目中设置引用导入。 Visual Studio Code支持它,但请注意,如果您使用的是特定的构建链(例如tsify / browserify),则在编译项目时可能无法正常工作。