継承すると、静的プライベートフィールドを参照している静的メソッドでタイプエラーが出ます
javascript
1//メソッド 2 3class A { 4 static _bar = 'bar' 5 static #baz = 'baz' 6 static getFoo() { 7 return 'foo' 8 } 9 static getBar() { 10 return this._bar 11 } 12 static getBaz() { 13 return this.#baz 14 } 15} 16 17class B extends A { 18 constructor() { 19 super() 20 } 21} 22 23console.log('A.getFoo()', A.getFoo()) //OK 24console.log('A.getBar()', A.getBar()) //OK 25console.log('A.getBaz()', A.getBaz()) //OK 26console.log('B.getFoo()', B.getFoo()) //OK 27console.log('B.getBar()', B.getBar()) //OK 28console.log('B.getBaz()', B.getBaz()) //NG //Uncaught TypeError: Cannot read private member #baz from an object whose class did not declare it
javascript
1//ゲッター 2 3class A { 4 static _bar = 'bar' 5 static #baz = 'baz' 6 static get foo() { 7 return 'foo' 8 } 9 static get bar() { 10 return this._bar 11 } 12 static get baz() { 13 return this.#baz 14 } 15} 16 17class B extends A { 18 constructor() { 19 super() 20 } 21} 22 23console.log('A.foo', A.foo) //OK 24console.log('A.bar', A.bar) //OK 25console.log('A.baz', A.baz) //OK 26console.log('B.foo', B.foo) //OK 27console.log('B.bar', B.bar) //OK 28console.log('B.baz', B.baz) //NG //Uncaught TypeError: Cannot read private member #baz from an object whose class did not declare it
「#baz
」が宣言されていないので呼べません!的なことを言われますが普通はどうするものですか?
「B.getBaz()
」も「B.baz
」もエラーなく呼びたいです。
Chrome87.0.4280.88だけで確認しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/10 23:56