Angular · Senior · Запитання 21 з 75
Навіщо використовувати абстрактний клас як DI-токен?
export abstract class Storage { abstract get(key: string): string | null; }
providers: [{ provide: Storage, useClass: LocalStorageService }]- ✓Правильна відповідь: Він задає контракт, який існує в рантаймі, тому реалізації можна підміняти для оточень чи в тестах
- 2Абстрактні класи інжектор створює швидше
- 3Інтерфейси працюють так само, це питання стилю
Пояснення
Інтерфейси стираються під час компіляції й не можуть бути токенами. Абстрактний клас дає і тип, і токен у рантаймі - це спосіб Angular залежати від абстракцій.