从服务器接收对象并将其转换为客户端Typescript(javascript)中的所需对象

时间:2017-05-21 05:57:21

标签: javascript json typescript casting javascript-objects

我有一个打字稿类,如下所示:

    export class Broker {
    constructor() {
        this.id = Guid.newGuid();
        this.stations = new Array<Station>();
    }
    index: number;
    id: string;
    name: string;  
    stations: Array<Station>;
    isIncomplete(): boolean { // error occurs because of this function which is undefined
        if (this.name == "" || this.name == undefined)
            return true;      
        return false;
    }
}

和这个类的数组

brokers: Array<Broker>;

我从服务器获得经纪人,如下所示

ngOnInit(): void {

    this.brokers = new Array<Broker>();

    this.brokerservice.getlist().then(
        data => this.brokers = data as Array<Broker>,

        error => this.errorMessage = <any>error);    
}
服务中的

getlist 返回正确的类型(Broker的数组),从服务器收到的json如下所示:

var brokers = new[]
        {

            new
            {
                index = 0,
                id = "097809098008",
                name = "کارگزاری اول",
            },
            new
            {
                index = 0,
                id = "98709-9",
                name = "کارگزاری ",
            },
        };

isIncomplete()函数是一个计算函数,当我想使用代理时,我无法在服务器端定义(或者至少我不知道如何)在客户端我得到错误 isIncomplete不是函数如果我省略该函数一切正常。即使我声明了代理数组的确切类型并进行了转换,但错误仍然存​​在。什么是解决问题的最佳方式(而不是定义全局函数)?

1 个答案:

答案 0 :(得分:1)

如果您要定位ES6,最简单的方法是使用Object.assign

data => this.brokers = data.map(d => Object.assign(new Broker(), d))

如果您的目标是&lt; ES6,然后您可以使用this polyfill from MDN