如何删除课程中的私有财产?

时间:2018-08-03 10:43:33

标签: typescript data-modeling

我需要一些有关Typescript类的解释,因为我有些不了解的内容。例如,我有一个带有某些属性的“汽车”类:

export class Car {

    private _id: number;
    private _brand: string;
    private _model: string;

    constructor(car) {
        if (car) {
            this.id = car.id;
            this.brand = car.brand; // should be this.brand or this._brand ?
            this.model = car.model;
        }
    }

    set id(value: number) {
        this._id = value;
    }

    get id(): number {
        return this._id;
    }

    set brand(value: number) {
        this._brand = value;
    }

    get brand(): number {
        return this._brand;
    }

    set model(value: number) {
        this._model = value;
    }

    get model(): number {
        return this._model;
    }
}

我必须将此对象发送到API。此人接受“品牌”和“型号”,而不接受“ _brand”或“ _model”。那么如何将好的模型发送到API?

这就是我通过console.log显示汽车对象时所拥有的东西:

汽车{id:“ 1”,品牌:“ Porsche”,型号:“ Carrera”,_ id:“ 1”,_ brand:“ Porsche”,_ model:“ Carrera”}

如果我删除“ _brand”,则“ brand”值未定义,但我想保留它。

delete myCar['_brand'];
console.log(myCar); // Car {_id:"1", "brand": undefined ...}

1 个答案:

答案 0 :(得分:1)

private / public / protected仅在typescript编译器中有效,将内容发送到“常规javascript”仍会显示对象中的所有内容,包括私有变量。

要仅发送公共变量,必须创建一个单独的对象,该对象不包含私有变量。