【发布时间】:2021-12-25 18:05:37
【问题描述】:
我有一些我正在尝试做的事情,但我不太确定如何在 typescript 中实现它。
我正在使用 discord.js,我正在尝试制作一个包装器来将 Discord.User | Discord.PartialUser(或类似的 T | PartialT 类型)转换为它们的非部分版本。
类似这样的:
interface Partial {
partial: boolean;
fetch(): Promise<any>;
}
async function departialize<T extends Partial>(thing: T) {
if(thing.partial) {
return await thing.fetch();
} else {
return thing;
}
}
编译时,我想包含更多类型信息。 IE。在这个例子中,我希望它返回 Promise<Discord.User> 而不是 Promise<Any>。
Discord.User.fetch()和Discord.PartialUser.fetch()都返回Promise<Discord.User>,这可以在接口或返回类型中推导出来吗?在 C++ 中我们会写类似 decltype(std::declval<T>().fetch()) 的东西,但不确定在 TS 中该做什么。
【问题讨论】:
标签: typescript discord.js