打字稿使用通用定义承诺返回值错误

时间:2019-11-04 04:23:59

标签: typescript generics promise

我想使用泛型来定义承诺返回值,当我调用get方法时,我定义了IReq和IRsp,但是IRsp(U)似乎是错误的。

  • TS2345:类型为'{status:string;的参数;数据:{}; }'不能分配给'U |类型的参数。 PromiseLike'。
  • 输入'{status:字符串;数据:{}; }”不可分配给“ U”类型。 '{状态:字符串;数据:{}; }'可分配给类型'U'的约束,但是'U'可以使用约束'{}'的其他子类型实例化。
const httpTest = {
  get<T, U>(options: T) {
    return new Promise<U>((resolve, reject) => {
      // async
      setTimeout(() => {
        const res = { status: '', data: {} };
        resolve(res);
      }, 2000);
    });
  },
};

interface IReq {
  url: string;
  data: {
    [propName: string]: any;
  };
}

interface IRsp<K> {
  status: string;
  data?: K;
}

httpTest.get<IReq, IRsp<{ name: string; age: number }>>({
  url: '/api/v2/config/get',
  data: {
    key: 'test',
  },
});

0 个答案:

没有答案