我们说我有一个班级Foo
:
export class Foo {
name: string;
printName(): void {
console.log(this.name);
}
}
现在的问题是,当我的FooService
从我的后端获得Foo
作为JSON并从中创建一个Foo对象时,它没有printName()
因为那里& #39;在JSON对象中没有这样的东西。
我应该如何安排这个(在Angular 2的背景下)?我是否必须在课外创建我的方法,以便他们只需要Foo
作为参数?
例如,在Java中,DTO的方法很完美。
答案 0 :(得分:7)
通常,您只使用http而不是类实例传输具有值的对象。您必须自己创建类实例。
export class Foo {
constructor(name: string) {}
printName(): void {
console.log(this.name);
}
}
// data deserialized by angular from the request
let data = { name: 'John' };
let foo: Foo = new Foo(data.name);
如果有帮助,您可以为从服务器接收的数据创建接口,并将其传递给Foo类的构造函数。
注意:请记住,TS中没有类型转换。 如果您正在做类似
的事情let foo: Foo = <Foo> data;
这是一个类型断言,您只需告诉编译器数据类型为 Foo 它对数据没有任何作用对象