是否有任何快捷方式可以让我自动生成我的打字稿导入?就像点击类型名称旁边的ctrl +空格并将导入声明放在文件顶部一样。如果没有,那么intellisense用于填写模块参考路径,以便我不必手动完成它?我真的很想使用vscode,但不得不为打字稿做手动导入会让我感到害怕。
答案 0 :(得分:2)
我相信该插件名为" TypeScript Importer"完全按照你的意思行事:https://marketplace.visualstudio.com/items?itemName=pmneo.tsimporter。
自动搜索工作区文件中的TypeScript定义,并将所有已知符号作为完成项提供,以允许代码完成。
使用它您可以真正使用 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的自动导入加快编码速度。建议列表现在包括当前项目中的所有导出符号。刚开始输入:
如果您从其他文件或模块中选择其中一个建议,VS Code将自动为其添加导入。在此示例中,VS Code将Hercules
的导入添加到文件顶部:
自动导入需要TypeScript 2.6+。您可以通过设置"typescript.autoImportSuggestions.enabled": false
来停用自动导入。
答案 3 :(得分:0)
tsconfig.json文件中的files属性允许您在整个项目中设置引用导入。 Visual Studio Code支持它,但请注意,如果您使用的是特定的构建链(例如tsify / browserify),则在编译项目时可能无法正常工作。