打字稿中是否可以将Promise定义为通用还是无效?
new Promise<T | void>((resolve: () => void, reject: () => void) => {}
以上是我要实现的目标。谢谢!
答案 0 :(得分:1)
以下是您的一些选择:
作为参考,这会导致错误:
new Promise<Date>((resolve, reject) => { }).then((x: Date) => x);
new Promise<Date>((resolve, reject) => { }).then((x: void) => x); // error
仅使用内联类型T | void
即可解决错误。
new Promise<Date | void>((resolve, reject) => { }).then((x: Date) => x);
new Promise<Date | void>((resolve, reject) => { }).then((x: void) => x);
另一种方法是创建一个通用的PromiseOrVoid<T>
类,如下所示:
class PromiseOrVoid<T> extends Promise<T | void> { }
new PromiseOrVoid<Date>((resolve, reject) => { }).then((x: Date) => x);
new PromiseOrVoid<Date>((resolve, reject) => { }).then((x: void) => x);