以下是同一类的2个版本。
1)使用公共字段:
export class MyClass {
public field: string;
}
2)使用getter和setter :
export class MyClass {
private _field: string;
public get field() {
return this._field;
}
public set field(field: string) {
this._field = field;
}
}
与其他语言比较:
如果这是一个java或C#类,那么普遍的共识是公共字段(即代码块1)违反封装法则。最重要的是,在java中,在多线程的情况下字段的行为方式存在一些差异。如果您想直接访问字段,可能需要添加volatile
关键字。
所以,在java和C#中,共识是你应该在大多数情况下编写getter / setter。 (即代码块2)
在打字稿中,getter / setter似乎有更多的缺点而不是优势:
但我的印象是,在Typescript中,将字段公开可能更好。它似乎解决了一些问题:
get f() { return f; }
一些具体问题:
为什么我会问有关风格的问题? - 因为我不会为自己编写代码。我也希望其他人享受我的代码,不要因为我违反简单的编码规则而感到恼火。