我有Request(method: HttpMethod, url: string, ...)
调用 API 的正常方法。我正在使用打字稿。
我需要将此 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
我做错了什么?