Private fields in-in

メソッドの引数に関して、特定のプライベートフィールドを持つかどうか in 演算子で判定できるようになった。

この機能がない場合、try...catchで例外を使った冗長な書き方を使うしかない。もっとシンプルに書きたいというモチベーションで提案された。

class Parent {
  #type = "dummy";

  static isFamily(obj) {
    // もっとシンプルに書きたい
    try {
      obj.#type;
    } catch() {
      return false;
    }
    return true;
  }
}

Example

class Parent {
  #type = "dummy";

  static isFamily(obj) {
    return #type in obj;
  }
}
console.log(Parent.isFamily(new Parent())); // true

// 継承した子クラスも判定できる
class Child extends Parent {}
console.log(Parent.isFamily(new Child()));

最終更新