我看到很多有关Typescript的构造函数重载技巧的问题。
实际上是否有任何理由不使用空的构造函数,然后实例化此类?
const obj = Object.assign(new MyClass(), {a: 'check', b: 'mate'})
答案 0 :(得分:0)
这违反了一个对象负责维护其自身内部状态的原则,并且它紧密地将创建MyClass
对象的代码与该状态的类表示形式耦合(以哪种属性保存哪些数据的形式)
在构造函数中可能要做的一件事是验证输入。例如,如果矩形的宽度或高度为负,则抛出错误。您的代码不允许这样做,因为直到构造函数返回后才分配属性,因此构造函数看不到它们。
您可能想做的另一件事是添加一些带有预计算值的额外字段。例如,如果一个类表示一个具有x
,y
和z
坐标的向量,并且您有一个length()
方法来计算长度,则可能需要对其进行重构构造函数计算一次长度,并将其存储在_length
属性中,然后length()
方法返回该属性。您的代码不允许进行这种重构,因为构造函数将无法看到x
,y
或z
值。