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







export class MyClass implements IMyClass {
    a!: string[];
    b!: string[] | undefined;

    [key: string]: any;

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

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            if (Array.isArray(_data["A"])) {
                this.a = [] as any;
                for (let item of _data["A"])
                    this.a!.push(item);
            }
            if (Array.isArray(_data["B"])) {
                this.b = [] as any;
                for (let item of _data["B"])
                    this.b!.push(item);
            }
        }
    }

    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 : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        if (Array.isArray(this.a)) {
            data["A"] = [];
            for (let item of this.a)
                data["A"].push(item);
        }
        if (Array.isArray(this.b)) {
            data["B"] = [];
            for (let item of this.b)
                data["B"].push(item);
        }
        return data;
    }
}

export interface IMyClass {
    a: string[];
    b: string[] | undefined;

    [key: string]: any;
}