【发布时间】:2020-06-07 14:06:36
【问题描述】:
我有普通的方法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
我做错了什么?
【问题讨论】:
标签: javascript typescript javascript-objects transformation class-transformer