首页 > 解决方案 > Typescript 通用 Promise 返回 T 或 void

问题描述

打字稿中有没有办法将 Promise 定义为泛型或 void?

new Promise<T | void>((resolve: () => void, reject: () => void) => {}

以上是我想要实现的。谢谢!

标签: typescript

解决方案


以下是一些供您选择的选项:

作为参考,这给出了一个错误:

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);

这是TypeScript fiddle 中的所有三个


推荐阅读