> just put the private fields in the parent closure where they can't be accessed externally
Your approach can't translate the following code:
class MyNumber {
#value;
constructor(value) { this.#value = value; }
add(other) { return new MyNumber(this.#value + other.#value); }
}
The proper solution is to use a non-enumerable property with an unnamed Symbol name, which is possible but cumbersome.