TypeError: getting private setter-only property

Ngoại lệ JavaScript "getting private setter-only property" xảy ra khi đọc giá trị của một phần tử riêng tư mà chỉ có setter được định nghĩa.

Thông báo

TypeError: '#x' was defined without a getter (V8-based)
TypeError: getting private setter-only property (Firefox)
TypeError: Trying to access an undefined private getter (Safari)

Loại lỗi

TypeError

Điều gì đã xảy ra?

Có một nỗ lực lấy giá trị của một phần tử riêng tư mà chỉ có setter được chỉ định. Không giống như các đối tượng thông thường, trong đó getter không được định nghĩa chỉ có nghĩa là thuộc tính sẽ luôn trả về undefined, đối với các phần tử riêng tư, đây là lỗi.

Ví dụ

Phần tử riêng tư không có getter

Ở đây, #name không có getter, vì vậy việc đọc nó bằng this.#name sẽ ném lỗi.

js
class Person {
  set #name(value) {}

  get name() {
    return this.#name;
  }
}

const person = new Person();
console.log(person.name);

Thường không phổ biến khi một phần tử riêng tư có setter mà không có getter. Hãy thêm getter hoặc tái cấu trúc chương trình của bạn để setter cũng có thể được loại bỏ.

Xem thêm