首页 > 解决方案 > 为什么 Promise 泛型类型只声明成功解析类型?

问题描述

假设我有以下代码:

function fn(): Promise<string> {
  return new Promise((resolve, reject) => {
    let randomBit = (Math.random() * 10) % 2 === 0;

    if (randomBit) {
      resolve("Resolve");
    } else {
      reject(0);
    }
  });
}

上述返回有效 Promise 的方法被正确键入为Promise<string>. 我了解内部类型声明了在成功解析的情况下返回的类型。但是,拒绝的回报呢?在我的示例中,拒绝将解析为number. 不应该,返回签名fn()类似于

Promise<string, number>

?

或者,更一般地说,Promise 不应该为两种可能的结果声明泛型类型,比如

Promise<TSuccess, TError>

?

我觉得我错过了什么。

标签: javascripttypescriptpromise

解决方案


推荐阅读