我在下面的代码中转载了我在打字稿中使用私有属性时遇到的问题。
预期的行为:仅公共属性应该在对象输出中可见,就像在常规封装中一样。
我的目标是使具有setter和getter的属性成为我的类的公开api的一部分,而不是私有属性(例如在C#中)
class MyClass {
public otherProp: boolean;
constructor() {
this.otherProp = false;
this._privateProp = false;
}
private _privateProp: boolean;
get publicProp() : boolean {
return this._privateProp;
}
set publicProp(values : boolean) {
this._privateProp = values;
}
}
let x: MyClass = new MyClass();
console.log(x); // MyClass {otherProp: false, _privateProp: false}
// Expected output: MyClass {otherProp: false, publicProp: false}
答案 0 :(得分:0)
您使用#
将属性标记为私有:
class MyClass {
public otherProp: boolean;
constructor() {
this.otherProp = false;
this.#_privateProp = false;
}
#_privateProp: boolean;
get publicProp() : boolean {
return this.#_privateProp;
}
set publicProp(values : boolean) {
this.#_privateProp = values;
}
}
let x: MyClass = new MyClass();
console.log(x); // MyClass {otherProp: false}