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

我想使用泛型来定义承诺返回值,当我调用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',},});
seasuccess 回答:打字稿使用通用定义承诺返回值错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3169121.html

大家都在问