use*_*057 2 json typescript angular
假设我有一节课Foo:
export class Foo {
name: string;
printName(): void {
console.log(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当我从后端FooService获取一个FooJSON并从中创建一个Foo对象时,它没有,printName()因为JSON对象中没有这样的东西.
我应该如何安排这个(在Angular 2的背景下)?我是否必须在课外创建我的方法,以便他们只是Foo作为一个参数?
例如,在Java中,DTO的方法完全没问题.
通常,您只使用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);
Run Code Online (Sandbox Code Playgroud)
如果它有帮助,您可以为从服务器接收的数据创建接口,并将其传递给Foo类的构造函数.
注意:请记住,TS中没有类型转换.如果你正在做类似的事情
let foo: Foo = <Foo> data;
Run Code Online (Sandbox Code Playgroud)
这是一个类型断言,您只需告诉编译器数据类型为Foo,它不会对数据对象执行任何操作.