我有一个中等大班,有很多不同的属性。因为它们有很多,所以为类创建一个构造函数会非常笨拙(想象一下你的代码中有新的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: ''
}
那没关系。但如果我在课堂上有一个方法,那么我也需要重新定义它!
有没有办法在不制作构造函数的情况下制作可选参数?或者是否有一种让构造函数获取对象的理智方式?
答案 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)