我在这个问题上没有找到可靠的答案:
如何将JSON响应从HTTP.get请求转换为Typescript对象的实例?
设置舞台:
CLASS =====================
export interface IMyClass {
myClassId: number;
myClassName: string;
myClassDescription: string;
}
export class MyClass implements IMyClass {
public myClassId: number;
public myClassName: string;
public myClassDescription: string;
constructor(
myClassId: number;
myClassName: string;
myClassDescription: string;
) {
this.myClassId = myClassId
this.myClassName = myClassName
this.myClassDescription = myClassName
}
}
SERVICE===============
public getMyClassById(id: number): Observable<MyClass> {
return this.http.get<MyClass>(`${this.apiEndpoint}/myClassId?myClassID=${id}`)
}
我试图弄清楚如何在不利用完整构造函数的情况下执行此操作,因为我的真实模型具有大约12个属性。我试过pipe =>将响应映射为MyClass,这似乎也不起作用。
答案 0 :(得分:1)
我试图弄清楚如何在不利用整个构造函数的情况下完成此操作,
您正在寻找反序列化(也称为水合)库。
我推荐的是https://github.com/mobxjs/serializr,因为它支持TypeScript
个人I prefer to keep with manual assignments,其更多代码,但可避免您陷入魔术错误。
答案 1 :(得分:0)
您可以对构造函数中的所有内容进行简短编码:
export interface IMyClass {
myClassId: number;
myClassName: string;
myClassDescription: string;
}
export class MyClass implements IMyClass {
constructor(
public myClassId: number,
public myClassName: string,
public myClassDescription: string
) {
}
}
您不需要公共和私有的,只需在构造函数中是公共的。
我想构造器中的;
是您粘贴错误的东西。