首页 文章

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

提问于
浏览
12

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

5 回答

  • 2

    有传言说它支持tsconfig.json(好吧,比谣言更好) . 这将使我们能够使用所有文件作为参考 .

    您的功能是创建一个自动导入所有常用的第三方库到打字 . 也许自动扫描文件并创建一个要收集的列表 . 如果只是通过代码(交互式)直接使用tsd快速添加其中几个,这不是很好吗?

  • 0

    这刚刚在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 来禁用自动导入 .

  • 1

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

  • 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";
    
  • 0

    我相信名为_547222的插件完全符合您的意思:https://marketplace.visualstudio.com/items?itemName=pmneo.tsimporter .

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

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

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

相关问题