【发布时间】:2020-12-16 20:56:33
【问题描述】:
我有一个函数返回一个将使用反射解决的承诺。
(Promise with、resolve 和 reject 函数排队然后执行)
函数的输入是来自一个对象的方法,参数如 SingleTask 类型所示。
因为我没有在承诺打字稿中返回任何内容,所以将Promise<any> 作为结果。
但实际上,结果是 Promise
如何声明正确的返回类型
type AnyClass = { new (...arg0: any): any }
type SingleTask<V extends AnyClass> = {
[P in keyof InstanceType<V>]-?: InstanceType<V>[P] extends (...a: any) => any
? [P, Parameters<InstanceType<V>[P]>]
: never
}[keyof InstanceType<V>]
addTaskToQueue(task: SingleTask<T>): Promise<ReturnType<**What i should put here ?** >> {
return new Promise((resolve, reject) => {
const instance = this.instances.pop()
if (instance) {
this.runTasksInQueue(instance, { task, resolve, reject })
} else {
this.queue.push({ task, resolve, reject })
}
})
}
【问题讨论】:
-
问题“我如何帮助 typescript 理解我将返回具有返回类型的函数的返回类型的承诺,该返回类型位于数组的第一个元素内,在输入中给出?”非常混乱。你能改写一下更清楚吗?也许用多个较短的句子而不是一个长的句子?此外,您的示例代码似乎不是minimal reproducible example;您能否编辑代码,以便任何人都可以将其放入像The TypeScript Playground 这样的独立 IDE 中并自己查看问题?祝你好运!
-
我改写一下,我觉得现在更容易理解了。抱歉,英语不是我的母语
标签: typescript typescript-typings typescript-generics