У меня есть нормальный метод Request(method: HttpMethod, url: string, ...)
для вызова API. Я использую TypeScript.
Мне нужно преобразовать ответ от этого запроса API в экземпляр класса с class-transformer
(или без него: D).
Пример:
class UserResponse {
id: number;l
foo: string;
bar: string;
}
const user = await Request(HttpMEthod.GET, '/user/1');
// `user` should be class instance `UserResponse`
Я знаю, что не могу использовать дженерики примерно так:
const Request = <T>(method: HttpMethod, url: string, ...) => {
// axios or something else...
return plainToClass(T, res);
}
const user = await Request<UserResponse>(HttpMEthod.GET, '/user/1');
Обобщения не работают таким образом, но я могу сделать что-то вроде:
const Request = <T>(method: HttpMethod, url: string, ..., transformTo?: { new (): T }) => {
// axios or something else...
return plainToClass(transformTo, res);
}
const user = await Request(HttpMEthod.GET, '/user/1', ... , new UserResponse());
Но это также не работает. Я все еще получаю user
тип:
const user: unknown
Что я делаю не так?