Próbuję znaleźć wzór do łączenia wielu interfejsów w jedną klasę abstrakcji. Obecnie mogę łączyć wiele interfejsów za pomocą "narzędzi", ale interfejs nie może zadeklarować konstruktora. Kiedy muszę wprowadzić konstruktora, zmuszony jestem użyć klasy abstrakcyjnej. Kiedy używam klasy abstrakcyjnej, muszę ponownie zadeklarować cały interfejs złożony! Z pewnością coś mi brakuje?Obejścia wielokrotnego dziedziczenia maszynopisu?
interface ILayerInfo {
a: string;
}
interface ILayerStatic {
b(): string;
}
class Layer implements ILayerInfo, ILayerStatic {
constructor(info: ILayerInfo);
a: string;
b(): string;
}
ODPOWIEDŹ: wykorzystanie „nowy”:
interface Layer extends ILayerInfo, ILayerStatic {
new(info: ILayerInfo);
}
// usage: new Layer({ a: "" });
To „nowe” słowo kluczowe w interfejsie, że mi brakuje! W ogóle nie chciałem klasy. Dzięki "nowemu" mogę trzymać się interfejsów. –