factoryinterface.ts
export namespace AnimalInterface{
export interface Animal {
say(): void
}
export interface AnimalFactory{
getInstance(type: string) :void
}
}
factoryimp.ts
import {AnimalInterface} from "./factoryinterface";
export namespace AnimalImp{
class Cat implements AnimalInterface.Animal{
say(){
console.log("This is a cat")
}
}
class Dog implements AnimalInterface.Animal {
say(){
console.log('This is a dog')
}
}
export class AnimalFactoryImp implements AnimalInterface.AnimalFactory {
constructor() {
}
getInstance(type: string) {
if(type === "Cat")
return new Cat();
else if(type === "Dog")
return new Dog();
}
}
}
test.ts
import { AnimalImp } from './factoryimp'
let a = new AnimalImp.AnimalFactoryImp();
console.log(a.getInstance('Cat').say())
console.log(a.getInstance('Dog').say())