【问题标题】:Go to implementation instead of TypeScript declaration转到实现而不是 TypeScript 声明
【发布时间】:2018-04-04 06:07:59
【问题描述】:

当我在 VSCode 中按住 Cmd 的同时单击导入的变量时,我通常最终会查看该变量的 TypeScript 声明。有没有办法让 VSCode 带我去定义它?我自己不使用 TypeScript,所以这个功能现在对我没有帮助。

【问题讨论】:

  • 能否提供一个小代码示例。这可能是一个设计限制,但这取决于代码的样子
  • @MattBierner:一个简单的例子是当我使用import classNames from 'classnames',Cmd-click classNames 并且我被带到 classnames_v2.xxjs 而不是 node_modules/classnames/index.js跨度>
  • 是的,听起来您遇到了我在回答中描述的限制。

标签: visual-studio-code


【解决方案1】:

经过大量搜索,我找到了一个简单的解决方案。

您只需将"typescript.disableAutomaticTypeAcquisition": true 添加到您项目的settings.json(或vscode 的全局设置)。

这将禁用 TypeScript 定义的自动生成,并恢复进入实现的原始“跳转到”行为。

来源: https://ianwalter.dev/jump-to-source-definition-instead-of-typescript-definition-in-vs-code

尽管作者提供了错误的说明(false 应该是 true 所以阅读帖子时要小心。也不需要重新安装节点模块。

【讨论】:

    【解决方案2】:

    这是目前 VS Code 如何为外部模块处理 JavaScript 和 TypeScript IntelliSense 的限制。请参阅this issue 了解更多信息

    总结一下:VS Code 的 JavaScript 和 TypeScript 支持由幕后的 TypeScript 提供支持。为了理解外部模块的 API,TypeScript 出于性能和可扩展性的原因使用了d.ts 文件。这样它就不必尝试加载或解析模块本身的所有代码。这种方法的缺点是我们无法映射回实际的 JS 限制。

    要解决此问题,库可以将映射从.d.ts 文件的declaration maps 捆绑回源.ts(或.js)文件。但是目前很多库不包含这些

    【讨论】:

    • 该问题现已关闭,但我还不清楚它现在是否应该工作,或者更确切地说是“无法修复”(问题已锁定,无法直接澄清)。任何想法什么是状态?
    • 我描述的行为是预期的行为。自 2017 年以来的主要改进是对 declaration maps 的支持。我已经更新了答案以包含有关该信息的信息
    【解决方案3】:

    实现是捆绑和转译的 ro javascript,vscode 无法将您带到那里,而是将您带到界面。您可以在 javascript 文件中搜索引用,也可以克隆或形成 repo 以查看 typescript 中的实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 2013-05-05
      • 1970-01-01
      • 2014-04-01
      • 2020-12-24
      相关资源
      最近更新 更多