ГР
Size: a a a
ГР
ГР
ei
MF
interface IClassFactory {
create<T>(name: string): T;
}
export class Class1 {
constructor(protected factory: IClassFactory) {}
public clone() { return this.factory.create<Class1>('Class1'); }
}
export class Factory implements IClassFactory {
create<T>(name: string): T {
switch (name) {
case 'Class1':
return new Class1(this) as any;
case 'Class2':
return new Class2(this) as any;
case 'Class3':
return new Class3(this) as any;
}
throw new Error('Invalid name: ' + name);
}
}
мне тут as any не нравится...AI
ГР
ei
ГР
ГР
ГР
ei
KV
Нh
ei
MF
export class Factory implements IClassFactory {
create(name: 'Class1'): Class1;
create(name: 'Class2'): Class2;
create(name: 'Class3'): Class3;
create<T = any>(name: string): any {
switch (name) {
case 'Class1':
return new Class1(this);
case 'Class2':
return new Class2(this);
case 'Class3':
return new Class3(this);
}
throw new Error('Invalid name: ' + name);
}
}ei
KV
MF
multi нужен?