我想使用泛型来定义承诺返回值,当我调用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',},});