Я хочу использовать универсальный тип для определения возвращаемого значения обещания, когда я вызываю метод get, я определяю IReq & IRsp, но IRsp (U) кажется неправильным.
- TS2345: Аргументtype '{status: string;данные: {};} 'нельзя назначить параметру типа' U |PromiseLike '.
- Type' {status: string;данные: {};} 'нельзя назначить типу' U '. '{status: string;данные: {};} 'присваивается ограничению типа' 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',
},
});