Dúvida técnica, essa implementação também não seria singleton?
//start of file
class Singleton {
constructor(){}
anyMethod(): void {
console.log("anyMethod")
}
}
const singleton = new Singleton()
export default singleton
//end of file
Sim, isso também é um Singleton. Nesse caso você está utilizando a flexibilidade do node para exportar do módulo a instancia da classe. Com isso, quando você for importar será sempre a mesma instancia.
Caso queira tirar a prova, apenas acrescente uma variável contadora no construtor, e importa em diferentes módulos.
class Singleton {
private countCalls: number = 0;
constructor() {
this.countCalls++
}
anyMethod(): void {
console.log(`Calls: ${this.countCalls}`)
console.log("anyMethod")
}
}
const singleton = new Singleton()
export default singleton
Resultado:
Calls: 1
anyMethod
Calls: 1
anyMethod
Calls: 1
anyMethod
Calls: 1
anyMethod