typescript - Typescript 通用 Promise 返回 T 或 void
问题描述
打字稿中有没有办法将 Promise 定义为泛型或 void?
new Promise<T | void>((resolve: () => void, reject: () => void) => {}
以上是我想要实现的。谢谢!
解决方案
以下是一些供您选择的选项:
作为参考,这给出了一个错误:
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);
推荐阅读
- reactjs - 如何自定义 react/next.js 输入占位符
- objective-c - 目标c:以编程方式查看控制器推送到标签栏控制器
- linux-kernel - 在设备树中使用 __overrides__ 可防止加载驱动程序
- python - 将 3D DataArray 重塑为 2d DataArray
- java - 如何从 openJDK 源代码构建 jdk11
- java - SpringBoot 无法识别 java.lang
- c# - EF6 数据库优先:在没有外键约束的实体之间添加关系
- ruby-on-rails - 为什么 Rails 6 破坏(散列?)分配给名为“video_key”的表单的 hidden_field 的字符串值?
- python - + 是什么意思
+ 在 mysql-python 中表示? - c# - 如何使用 Microsoft Graph 创建 Microsoft Teams 会议作为应用程序?