【问题标题】:receive object from server and cast it to desired object in client Typescript (javascript) [duplicate]从服务器接收对象并将其转换为客户端Typescript(javascript)中的所需对象[重复]
【发布时间】:2017-10-20 23:27:39
【问题描述】:

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

    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 在服务中返回正确的类型(代理数组),从服务器接收到的 json 如下:

var brokers = new[]
        {

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

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

【问题讨论】:

    标签: javascript json typescript casting javascript-objects


    【解决方案1】:

    如果你的目标是 ES6,最简单的方法是使用Object.assign

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

    如果你的目标是this polyfill from MDN。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 2015-02-08
      • 2017-07-14
      • 1970-01-01
      • 2015-01-02
      相关资源
      最近更新 更多