Angular 2:如何在反序列化时保留类方法?

时间:2017-03-24 12:07:52

标签: json angular typescript

我们说我有一个班级Foo

export class Foo {
    name: string;

    printName(): void {
        console.log(this.name);
    } 
}

现在的问题是,当我的FooService从我的后端获得Foo作为JSON并从中创建一个Foo对象时,它没有printName()因为那里& #39;在JSON对象中没有这样的东西。

我应该如何安排这个(在Angular 2的背景下)?我是否必须在课外创建我的方法,以便他们只需要Foo作为参数?

例如,在Java中,DTO的方法很完美。

1 个答案:

答案 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 它对数据没有任何作用对象