Angular · Senior · Pytanie 21 z 75
Po co używać klasy abstrakcyjnej jako tokenu DI?
export abstract class Storage { abstract get(key: string): string | null; }
providers: [{ provide: Storage, useClass: LocalStorageService }]- ✓Poprawna odpowiedź: Definiuje kontrakt istniejący w runtime, więc implementacje można podmieniać dla środowisk lub w testach
- 2Klasy abstrakcyjne są szybciej tworzone przez injector
- 3Interfejsy działają tak samo, to kwestia stylu
Wyjaśnienie
Interfejsy są usuwane podczas kompilacji i nie mogą być tokenami. Klasa abstrakcyjna daje zarówno typ, jak i token w runtime - to sposób Angulara na zależność od abstrakcji.