【问题标题】:JetBrains TypeScript inspector & d.ts referencesJetBrains TypeScript 检查器和 d.ts 参考
【发布时间】:2018-08-22 03:47:40
【问题描述】:

有一个由 Grunt 编译的 TypeScript 项目。

我还使用 JetBrains WebStorm 作为 IDE 和它的 TypeScript 检查器。

问题 - 它与包含的工作不正确

<reference path="Declarations.d.ts" />

Grunt 编译需要该引用,但检查员不将其识别为定义,并且我在 d.ts 和 TS 模块中放置了大量错误:

重复标识符类名

如何解决?

尝试使用 tsconfig 文件,但在我的情况下无法使用。

【问题讨论】:

  • 你看到了什么错误?看起来您的 Declarations.d.ts 文件受到尊重,但编译器对那里的声明感到困惑,这些声明与 TypeScript 默认 *lib.d.ts 文件重复声明
  • @lena 我的每个项目类名都有一个“重复标识符”错误。例如。类名/模块在 Definitions.d.ts 中有一个定义,以允许 grunt 通过引用指令编译没有所需类的 TS,并属于它 - Webstorm 由于某些原因使用“引用”指令作为 TS,并给了我一个重复的标识符错误(我在 tsconfig.json 中排除了 .d.ts,但它存在于引用中 - WebStorm 仍然可以看到它)

标签: typescript intellij-idea webstorm jetbrains-ide


【解决方案1】:

Webstorm 对 TS 使用 &lt;reference path&gt; 指令,就像编译器一样:) 这是预期的且完全有效的行为。并且排除 tsconfig.json 中的引用文件确实没有帮助,因为从包含的文件中明确引用的文件也包括在内。见http://www.typescriptlang.org/docs/handbook/tsconfig-json.html:Any files that are referenced by files included via the "files" or "include" properties are also included. Similarly, if a file B.ts is referenced by another file A.ts, then B.ts cannot be excluded unless the referencing file A.ts is also specified in the "exclude" list.

【讨论】:

  • 感谢您的回答。我明白这一点,但为什么 grunt / gulp 编译器会忽略这些引用?更准确地说 - 它理解 d.ts 是唯一的定义,并且在它们的编译中没有“重复标识符”错误。如何让我的 TS 对两者都有效?
  • 我不知道你的 Grunt 配置是什么样的 - 很可能,它使用自己的方式在编译中包含文件。请分享一个可用于重新创建问题的示例项目
  • 不知道分享它的最佳方式,但这里有一个示例项目的 Dropbox 链接。 - dropbox.com/s/iu5l8erh1oe7855/TS%20test.zip?dl=0
  • 可能是WebStorm将所有ts文件识别为一个项目,而Grunt分部分编译的问题。所以WebStorm 看到了重复。有没有办法提供多个 tsconfig 文件?还是一个 tsconfig 的多个项目?让 Webstorm 知道哪些文件与其他文件一起编译?
  • 非常感谢,终于解决了这个问题。为每个包创建了 tsconfig,并且可能会从 Grunt TS 配置转到项目中的 tsconfigs,以便在任何情况下都清楚
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 2019-10-22
  • 2018-03-23
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
相关资源
最近更新 更多