【发布时间】:2020-06-07 05:41:01
【问题描述】:
我正在制作一个打字稿 npm 包。
它使用 discord.js,但 discord.js 有两个主要版本:
* discord.js 11.5
* discord.js v12.0.0-dev
我希望我的模块同时支持这两个版本。我的意思是,用户可以安装他们想要的 discord.js 版本,并且该包将使用好的代码。
对于另一个项目,在 javascript(没有打字稿)中,我使用这个:
const { version } = require("discord.js");
if(version === "12.0.0-dev"){
// code for v12
} else {
// code for v11
}
而且效果很好。但是,对于打字稿,由于打字,它更复杂。事实上,discord.js 的类型在 v11 和 v12 中是不一样的,所以我无法同时编译这两个版本的代码:
const { Guild, version } = require("discord.js");
if(version === "12.0.0-dev"){
Guild.iconURL(); // for v12
} else {
Guild.iconURL; // for v11
}
如果安装了 v12,则会抛出 iconURL() doesn't exist on Guild,如果是 v11,则会抛出 iconURL doesn't exist on Guild。
有什么方法可以在同一个包中同时支持这两个版本,而不需要为每个版本创建一个分支?
【问题讨论】:
标签: javascript node.js typescript types discord.js