TypeScript:Class中的可选参数

时间:2017-10-31 10:32:21

标签: javascript typescript

我有一个中等大班,有很多不同的属性。因为它们有很多,所以为类创建一个构造函数会非常笨拙(想象一下你的代码中有新的CLassObj(par1,par2,par3,par4,par5,par6,par7,... pars)。不可能记住顺序,所以我通常会这样初始化它:

{
    movie: this.movie,
    row: 10,
    seat: 12,
    cashPrice: 170,
    discount: 0,
    bonusesPrice: 4200,
    is3D: false,
    isVR: false,
    includesGlasses: false,
    promocode: ''
  }

那没关系。但如果我在课堂上有一个方法,那么我也需要重新定义它!

有没有办法在不制作构造函数的情况下制作可选参数?或者是否有一种让构造函数获取对象的理智方式?

3 个答案:

答案 0 :(得分:1)

以下是如何使用可选参数创建类的示例:

export class User {
  constructor(
    public id?: string,
    public fullName?: string,
  ) {}
}

现在可以用

调用它
let user = new User();
let user = new User('ID1');
let user = {};
let user = { id: 'ID1' }; // Your IDE will give you completion in that case
// And so on ...

答案 1 :(得分:1)

您可以使用Partial<T>作为构造函数的参数。这允许一个对象文字,可选择指定该类的任何成员:

class BigClass {
    movie: string;
    row: number;
    seat:number;
    cashPrice: number;
    discount: number;
    bonusesPrice: number;
    is3D: boolean;
    isVR: boolean;
    includesGlasses: boolean;
    promocode: string;
    public constructor (cfg: Partial<BigClass>){
        Object.assign(this, cfg);
    }
    method (){

    }
}

var d = new BigClass({
    is3D: true
});

答案 2 :(得分:0)

这个问题有很多解决方案。

您可以使用解构:C:

您可以使用一些设计模式,例如构建器:C: