javascript / intermediate
Snippet
Abstrakte Klassen-Polymorphie über Angular InjectionToken-Provider
Abstrakte TypeScript-Klassen definieren polymorphe Verträge ohne Laufzeit-Overhead. Durch die Verknüpfung einer abstrakten Basisklasse mit einem Angular InjectionToken und einer Standard-Factory können Konsumenten die abstrakte Schnittstelle direkt injizieren, wodurch Laufzeit-Implementierungen flexibel zwischen Modulen oder Test-Suites ausgetauscht werden können.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Injectable, InjectionToken } from '@angular/core';export abstract class BaseNotifier {abstract sendAlert(message: string): void;}@Injectable()export class ToastNotifier extends BaseNotifier {sendAlert(message: string): void {console.warn(`[TOAST]: ${message}`);}}export const NOTIFIER_TOKEN = new InjectionToken<BaseNotifier>('NOTIFIER_TOKEN', {providedIn: 'root',factory: () => new ToastNotifier()});
angular
Erklärung
1
export abstract class BaseNotifier { abstract sendAlert(message: string): void; }
Deklariert die abstrakte Klasse, welche die erforderlichen Methodensignaturen für abgeleitete Klassen festlegt.
2
export const NOTIFIER_TOKEN = new InjectionToken<BaseNotifier>('NOTIFIER_TOKEN', {
Erstellt ein typsicheres InjectionToken mit einer Standardimplementierung auf Root-Ebene.