ts 中的class如何实现以上效果
类中有私有方法a
a可以被实例上的方法引用
a可以引用实例上的属性
打印实例方法a不可见
如果你需要 es 中的真正的私有属性,而非 ts 的假私有属性,可以这样写:
class Test {
#a = () => console.log(1)
public b() {
this.#a();
}
}
如果你需要支持低版本的 js,而只是希望这个属性不可见(其实还是可以访问的),可以将这个数值设置为不可枚举。
function Test() {}
Object.defineProperty(Test.prototype, "a", {
enumerable: false,
writable: true,
});
Test.prototype.a = function() {
console.log(111)
}