typescript class定义私有方法

hold_baby
  • 2.9k

image.png
image.png

ts 中的class如何实现以上效果
类中有私有方法a
a可以被实例上的方法引用
a可以引用实例上的属性
打印实例方法a不可见

回复
阅读 1.6k
2 个回答

如果你需要 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)
}

class Test {
  public readonly c = 1;

  public b () {
    const a = () => {
      console.log(this.c);
    };
    a();
  }
}
你知道吗?

宣传栏