打字稿:类成员初始化与二传手和getter



我有以下代码:

export class Myclass {
private _someVal = 2;
public get someVal() {
return this._someVal;
}
public set someVal(val) {
this._someVal = val;
}
}

我在模板<span>{{ someVal }}</span>中使用此someVal

值不变。

使用二传手和二传手,或者只是拥有let someVal = 2并直接在模板中使用它有什么区别吗?

在这种特殊情况下,你所做的和所做的没有区别:

export class Myclass {
someVal = 2;
}

二传手和 getter 都有用例,例如当您在设置值时需要执行其他操作时,但这不是其中之一。

在类中,不使用let关键字。

在这种情况下,使用访问器是没有意义的。如果在集上触发操作,或在 get 上计算值,则使用它们是有意义的。

如果直接访问该物业有效,则可能是正确的解决方案。

在 Java 世界中,为 DTO 中的每个字段创建 getter/setter 是很常见的,这是否是一种反模式是有争议的。这种做法渗透到其他语言中。

经验法则:如果不需要访问器,请使用属性。

唯一的区别是 get/set 实现允许您具有更大的灵活性,而公共属性的灵活性较低。

您可以使用 get 执行的操作示例:

export class Myclass {
private _someVal = 2;
private _otherVal = 1;
public get calculatedVal() {
return this._someVal + this._otherVal;
}
}

然后访问calculatedVal作为属性,如下所示:<span>{{ calculatedVal}}</span>

最新更新