﻿//----------------------
// <auto-generated>
// </auto-generated>
//----------------------







export class Complex implements IComplex {
    a!: number;

    constructor(data?: IComplex) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
    }

    init(_data?: any) {
        if (_data) {
            this.a = _data["A"] !== undefined ? _data["A"] : null as any;
        }
    }

    static fromJS(data: any): Complex {
        data = typeof data === 'object' ? data : {};
        let result = new Complex();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        data["A"] = this.a !== undefined ? this.a : null as any;
        return data;
    }
}

export interface IComplex {
    a: number;
}

export class MyClass implements IMyClass {
    items!: (Complex | null)[];

    constructor(data?: IMyClass) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
    }

    init(_data?: any) {
        if (_data) {
            if (Array.isArray(_data["Items"])) {
                this.items = [] as any;
                for (let item of _data["Items"])
                    this.items!.push(Complex.fromJS(item));
            }
            else {
                this.items = null as any;
            }
        }
    }

    static fromJS(data: any): MyClass {
        data = typeof data === 'object' ? data : {};
        let result = new MyClass();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        if (Array.isArray(this.items)) {
            data["Items"] = [];
            for (let item of this.items)
                data["Items"].push(item ? item.toJSON() : null as any);
        }
        return data;
    }
}

export interface IMyClass {
    items: (Complex | null)[];
}