Ez a követelmény az objektumorientált programozás (OOP) alapjaira és haladóbb technikáira vonatkozik. Nézzük át tömören, de világosan:
✅ Öröklődés (Inheritance)
🧩 Lényege:
Egy osztály (gyerek / leszármazott) örökli egy másik osztály (szülő / base class) tulajdonságait és metódusait.
🔧 Példa:
class Animal {
constructor(public name: string) {}
speak(): void {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
speak(): void {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Rex');
dog.speak(); // Rex barks.
✅ Mikor hasznos?
- Ha több osztálynak van közös viselkedése (DRY elv)
- Ha polimorfizmust akarsz (pl.
speak()mindegyik állatnál más)
✅ Mixin
🧩 Lényege:
A mixin egy olyan technika, ahol több viselkedést “öntesz bele” egy osztályba, nem klasszikus örökléssel.
Mivel TypeScript nem támogatja a többszörös öröklést (extends csak egy lehet), a mixin ezt alternatív módon teszi lehetővé.
🔧 Egyszerű példa:
type Constructor<T = {}> = new (...args: any[]) => T;
function CanFly<TBase extends Constructor>(Base: TBase) {
return class extends Base {
fly() {
console.log('Flying...');
}
};
}
function CanSwim<TBase extends Constructor>(Base: TBase) {
return class extends Base {
swim() {
console.log('Swimming...');
}
};
}
class Animal {
constructor(public name: string) {}
}
const MixedAnimal = CanFly(CanSwim(Animal));
const duck = new MixedAnimal('Duck');
duck.fly(); // Flying...
duck.swim(); // Swimming...
🧠 Összefoglalás
| Fogalom | Leírás |
|---|---|
| Öröklődés | Egy osztály örökli egy másik tulajdonságait/metódusait |
| Mixin | Egy vagy több viselkedés komponensszerű hozzáadása egy osztályhoz |
| Használati példa | Öröklődés: Dog extends Animal, Mixin: CanFly(Base) |
Ha szeretnél Angular-specifikus példát (pl. BaseComponent, WithDestroyMixin, stb.), szívesen mutatok olyat is.