Typescript: 请提供的自动完成功能<reference>和导入路径</reference>

创建于 2014-07-22  ·  36评论  ·  资料来源: microsoft/TypeScript

你好

Visual Studio(2013 Ultimate)通过读取文件系统并显示可用文件或文件夹,为脚本元素的src属性提供了智能感知。

Image

如果可以为<reference>和import语句提供类似的功能,这将非常有用:


 <reference path="foo/    <--- here

import foo = require('foo/   <--- and here

API Moderate Suggestion Visual Studio help wanted

最有用的评论

到目前为止,这是我使用打字稿时最大的浪费时间。 如果它可以自动完成我的班级名称,那么它应该能够确保有一个导入语句。 最后,我对路径进行了有根据的猜测,然后在路径上添加了“ ../”,然后等待看看红色的弧线是否消失并重复直到它消失为止。

能够“优化导入”并自动删除未使用的导入也是很好的。

所有36条评论

:+1:

@NoelAbrahams btw

image

@basarat ,有趣。 从来没有使用过reshaper,也不认为这会改变。 因此,对于像我这样的反第三方工具的人,我希望这会在VS插件中使用。 :微笑:

:+1:

@NoelAbrahams btw atom- https :

甚至自动完成的外部模块“名称”和“ ./path”:rose:

我不知道@ ahmad-farid是否真的有机会从此开始,但是@basarat ,您是否认为此功能可以为TypeScript本身做出贡献,还是更紧密地与atom-typescript耦合?

它与原子打字稿更紧密地耦合吗

紧密耦合,我做_poor_标记化来检测这些:
https://github.com/TypeStrong/atom-typescript/blob/d5fb4707b989f15d3be8d57cfa28d88af50b4702/lib/main/atom/typescriptGrammar.ts#L68 -L76

获得这些结果的代码要简单一些

  • 参考/导入的相对路径: https :
  • 外部模块名称查找:我实际上问过了这个简单的函数: https :

不必紧密耦合。 但这就是我作为TypeScript使用者编写它的方式,并且没有复制粘贴PR。

如果有人要PR,他们会在getCompletionInfo的参考注释/导入字符串中_am I__检测,然后在那里进行查找。

还有更多可能的箍: https :

你能不能拖放这似乎容易得多。

对于导入自动完成功能,我建议在解决方案资源管理器中使用另一个功能,例如“复制导入参考”,然后右键单击文件,然后将其粘贴到文件中,其内容将类似于“ import fileName = require(“ ../ dir / filename”);”。 这应该跟踪相对路径和文件名大小写。

如果有人可以指导我在本资料中的哪里寻找,我可以尝试添加。

您现在需要修改与Visual Studio相关的代码以进行类似的更改,这些代码目前还不是开源的。

我们实际上在某个时候拖放了///参考生成,但是它很难发现并且扩展性不佳(您是否真的要从解决方案的不同部分拖放5个以上的项目到可能关闭的文件夹中解决方案资源管理器?)。

在任何情况下,这类交互都是不错的选择,但在以键盘为中心的工作流程中也应该更容易完成,而自动完成功能会有所帮助。

我们有太多的模块,以至于遍历文件系统是不实际的,其中一些是生成的外部模块名称,而不是文件。 因此,我们希望运行一个定期索引,然后以某种方式向语言服务提供这些索引的列表(例如RPC或我们在本地磁盘上暂存的文件等)。

+1具有自动完成导入功能,非常棒。

仍然对此有很多要求,特别是像现在使用VSCode和Salsa一样,这实际上是一种回归(即,它们过去通常为模块提供require补全)。 我相信一些非Microsoft编辑器也已经在TypeScript / JavaScript中提供了对此的支持。 我们应该考虑将其拉入(ping @mhegazy )。

老实说,这是我必须继续使用Webstorm的唯一原因,Webstorm已为自动完成导入和引用构建了自定义处理程序。 不仅可以自动完成,还可以自动修复。

我们大约有2万5千行Typescript atm,如果可以引入此功能以便所有其他IDE都可以采用它,那将是非常好的。

我们还需要此功能。 这是Java世界中最大的缺点之一,在Java世界中,使用eclipse或intellij可以轻松完成重构。

我想在这里介绍一下,虽然自动导入完成非常有帮助,并且很好用,但我想指出的是,此功能是Web Storm不够理想的原因之一。 连续扫描node_modules会产生大量的内存和处理开销,这会大大降低VSCode的速度。

简而言之-我很喜欢这个功能,但不以VSCode的超快速度为代价。 作为一个轻量级的编辑器,我希望以便利为代价来提高速度,功能和灵活性。 速度较慢的IDE会不断增加延迟,因此总拥有成本较高,轻量级的编辑器可让您以不间断的速度进行刻录。

@mikepc curiou是否使用过其他实现,例如https://packagecontrol.io/packages/AutoFileName,以及如何找到WebStorm努力进行的项目的性能。

我认为您可以使用复杂的导入完成算法,而不会遇到您描述的性能问题。 一种优化将是使用tsconfig中的exclude字段从自动完成索引中排除文件和文件夹。 现在,只有项目文件路径会自动完成。 如果有人从依赖项中导入模块,则打字稿会知道该依赖项的位置。 因此,导入的依赖项的文件夹也包含在索引中。 可以通过每个依赖模块的引用计数器来管理删除。

我对各种方法的内部运作一无所知
包遍历,并且如果确实有可能只包含一个
次要性能提升,我完全希望添加它。 我喜欢
使用VSCode。 我只想继续享受它。

在2016年4月18日,星期一,下午12:37,弗雷德里克·舒伯特<
[email protected]>写道:

我认为您可以使用复杂的算法来完成导入
不会遭受您描述的性能问题的困扰。 一
优化将是使用tsconfig中的exclude字段来排除
自动完成索引中的文件和文件夹。 现在只有项目文件
路径将自动完成。 如果有人从依赖项导入模块,则
打字稿知道此依赖项位于何处。 因此,
导入的依赖项也包含在索引中。 删除可能是
通过引用计数器为每个依赖模块进行管理。


您收到此邮件是因为有人提到您。
直接回复此电子邮件或在GitHub上查看
https://github.com/Microsoft/TypeScript/issues/188#issuecomment -211543527

阅读完本主题后,我仍然不确定这将在VS Code中实现吗? 每次手动执行所有这些操作都是很烦的。

到目前为止,这是我使用打字稿时最大的浪费时间。 如果它可以自动完成我的班级名称,那么它应该能够确保有一个导入语句。 最后,我对路径进行了有根据的猜测,然后在路径上添加了“ ../”,然后等待看看红色的弧线是否消失并重复直到它消失为止。

能够“优化导入”并自动删除未使用的导入也是很好的。

是的,这真是太痛苦了。

有什么消息吗?

有什么消息吗?

正在努力。 但没有什么要报告的。

是否已达成协议,这对于进口应该如何工作?

我想这将是一个不错的用户体验:在VS Code中,如果我按Ctrl + T(在整个项目范围内键入要搜索符号的类型),然后选择一个符号,它将使我能够以某种方式为其生成import语句。

有点相关,由于某种原因,项目范围的符号列表没有向我显示导出的变量,例如export let globalStyles = {}但它出现在文件符号列表中。 项目范围内的符号列表必须显示所有符号,以使其能够用作导入GUI。

@Ciantic听起来不错。 我更希望在使用Intellisense时自动导入它自动完成的,不在范围内的东西。 我还希望选择清理未使用的导入或对它们进行排序的其他功能。 另一个很好的事情是,例如,如果您删除了导入内容的最后用法,则导入语句将被删除。

我构建此代码是为了自己解决问题https://marketplace.visualstudio.com/items?itemName=Sammons.ts-import-assistance ,代码在这里: https :

这只是建立在内置符号搜索的基础上。

同时,我也遇到了这个VS Code插件并提供了帮助:
https://marketplace.visualstudio.com/items?itemName=steoates.autoimport

当我将项目从名称空间(内部模块)切换到外部模块时,它极大地帮助了我。

@Taytay谢谢,尝试了一下,但是这导致我的VS代码挂起。

哦,@ rolandoldengarm。 明白了 (对于它的价值,我发现作者在遇到问题时会做出回应,以备您继续追求。)

@Taytay感谢您提供信息,但是我做了自己的扩展;-)当前我正在重写逻辑以使其更快。 我不是使用正则表达式来解析文件(就像许多其他文件一样),而是使用打字稿编译器生成源的AST。
如果您有兴趣,可以在这里找到: https :

@buehler这很棒! 到目前为止还没有问题。 绝对比输入全部要快得多。

请问它的状态是什么? 路线图已对其进行了检查,但夜间构建未显示它

您如何使用每晚版本?

@mhegazy我正在使用VSCode

    "typescript.tsdk": "./node_modules/typescript/lib",

.vscode/settings.json指向每晚生成的npm软件包(最新更新)

导入的模块路径没有自动完成功能

image

如您所见,自动完成功能仅显示已看到的文本令牌,而不显示光盘上文件的名称

它适用于相对路径,但不适用于“绝对路径”(baseUrl和路径的组合)。
任何解决方案或解决此问题?
谢谢

此页面是否有帮助?
0 / 5 - 0 等级