// @target: esnext, es2022, es2015 class A { #field = 1; otherObject = new A(); testObject() { return { x: 10, y: 6 }; } testArray() { return [10, 11]; } constructor() { let y: number; ({ x: this.#field, y } = this.testObject()); ([this.#field, y] = this.testArray()); ({ a: this.#field, b: [this.#field] } = { a: 1, b: [2] }); [this.#field, [this.#field]] = [1, [2]]; ({ a: this.#field = 1, b: [this.#field = 1] } = { b: [] }); [this.#field = 2] = []; [this.otherObject.#field = 2] = []; } static test(_a: A) { [_a.#field] = [2]; } }