Klasa nie implementuje swojego interfejsu
Class 'L' incorrectly implements interface 'J'.…Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Klasa napisała `implements`, a potem tego nie zrobiła. Szczegół poniżej nazywa dokładnie, czego brakuje albo co się nie zgadza.
Odtworzenie
interface J { a: number } class L implements J { }
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
`implements` to sprawdzenie, nie polecenie: nie dodaje klasie niczego, tylko prosi kompilator o potwierdzenie, że klasa już spełnia interfejs. Dlatego usunięcie klauzuli sprawia, że błąd znika, nie czyniąc klasy ani trochę poprawniejszą — interfejs nigdy nie był źródłem składowych, tylko ich specyfikacją.
Naprawy
- 01
interface J { a: number } class L implements J { a = 1 }
Zaimplementuj to, co obiecano.
- 02
interface J { a?: number } class L implements J { }
Albo zmień specyfikację, jeśli składowa nigdy naprawdę nie była wymagana. Warto tylko wtedy, gdy każdy inny implementujący poradzi sobie z jej brakiem.
Wniosek
Usunięcie `implements`, by się tego pozbyć, usuwa jedyną rzecz sprawdzającą klasę. Ten błąd jest funkcją, nie usterką.