如何在名称中带有点的模块上使用 WebStorm 中的 JSDoc 类型推断? (Discord.js)

How do I use JSDoc type inference in WebStorm on a module with a dot in it's name? (Discord.js)

我正在尝试找到一种方法来使用 WebStorm 的 JSDoc 类型推断以非冲突模式处理 Discord.js TypeScript 注释。

这是 "works"...

import Discord from 'discord.js';

/**
 * @param {Client} client
 * @param {Collection.<Snowflake, Message>} msgs
 */
function handleRemoveMessages(client, msgs) {}

问题出在客户端,存在多个定义。 虽然这可行,但我希望能够将从 discord.js 模块导入的类型命名为 Discord.Client 而不是 Client,因为我想使用其他命名的符号这样。

因此,例如... Message 引用了正确的类型; 并且 Discord.Message 似乎 引用了正确的类型(但我不相信它是); 两个 Message 类型引用不兼容,并在提供一个代表另一个时抛出警告。 也无法通过 JSDoc 模块路径引用类型... 我还尝试了 module:discord\.jsmodule:'discord\.js' 和双引号,结果都一样。

我知道在 JSDoc 路径名中使用点有点不合规矩,而且 JetBrains 使用的 Closure 编译器可能不是 100% 符合 JSDoc。

这只是 WebStorm 或 Closure 中的错误,还是有办法正确制作此模块类型引用?

根据JSDoc 3 spec, you need to quote the names with 'unusual' chanracters, like module:"discord.js". But it doesn't currently work as expected, please follow WEB-34348更新