SyntaxError: private fields can't be deleted

Ngoại lệ JavaScript "SyntaxError: private fields can't be deleted" xảy ra khi delete được dùng trên một phần tử private của class hoặc object.

Thông báo lỗi

SyntaxError: Private fields can not be deleted (V8-based)
SyntaxError: private fields can't be deleted (Firefox)
SyntaxError: Cannot delete private field X (Safari)

Loại lỗi

SyntaxError

Nguyên nhân

Có đoạn code đang cố delete một phần tử private (field hoặc method) của object hoặc class. Điều này bị JavaScript cấm — các phần tử private không thể được thêm vào hoặc xóa đi trong lúc chạy chương trình.

Ví dụ

js
class MyClass {
  #myPrivateField;
  deleteIt() {
    delete this.#myPrivateField; // SyntaxError: private fields can't be deleted
  }
}
js
class MyClass {
  #myPrivateMethod() {
  }
  #deleteIt() {
    delete this.#myPrivateMethod; // SyntaxError: private fields can't be deleted
  }
}

Xem thêm