私人财产的行为就像打字稿中的公共财产一样

时间:2020-06-07 21:28:18

标签: javascript typescript oop properties

我在下面的代码中转载了我在打字稿中使用私有属性时遇到的问题。

预期的行为:仅公共属性应该在对象输出中可见,就像在常规封装中一样。

我的目标是使具有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}

1 个答案:

答案 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}