Przejdź do treści
webtype.orgwebtype.orgtsconfig

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    tsconfig

    noImplicitOverride

    Nadpisanie musi być celowe

    Wymaga słowa kluczowego `override` przy każdym składniku, który zastępuje ten z klasy bazowej.

    Od
    TypeScript 4.3
    strict
    Poza strict
    W twoim tsconfigu
    "noImplicitOverride": true

    Ten sam fragment za każdym razem. Zmieniła się tylko opcja.

    Z wyłączoną

    "noImplicitOverride": false
    class Base {
      greet() {
        return 'hi'
      }
    }
    
    export class Child extends Base {
      greet() {
        return 'yo'
      }
    }

    Kompiluje się czysto

    Z włączoną

    "noImplicitOverride": true
    class Base {
      greet() {
        return 'hi'
      }
    }
    
    export class Child extends Base {
      greet() {
        return 'yo'
      }
    }

    Zgłasza TS4114

    Dlaczego kompilator się tym przejmuje

    Awaria, której to zapobiega, biegnie w odwrotną stronę niż ta oczywista. Ryzykiem nie jest napisanie `override` na czymś, co niczego nie nadpisuje — tylko klasa bazowa dokładająca metodę, którą podklasa już ma, po cichu zamieniając niezależny składnik w nadpisanie, którego nikt nie przejrzał. Gdy słowo kluczowe jest wymagane, kompilator zauważa, że relacja zmieniła się pod tobą — a to jedyny moment, w którym ta informacja się przydaje.

    Wniosek

    To słowo kluczowe nie jest dokumentacją. To drut ostrzegawczy na klasie bazowej.

    Gdzie iść dalej

    Opcji: 22