Я использовал node / JavaScript несколько лет и сейчас только знакомлюсь с TypeScript. Я пытаюсь понять, когда использовать класс, а когда использовать модуль в TypeScript.
В JavaScript я часто создавал такие модули:
const name = "batman";
function getName() {
return name;
}
module.exports = {
name
};
В TypeScript этот же код можно записать как:
const name: string = "batman";
export function getName(): string {
return name;
}
Однако в читая онлайн, можно найти множество примеров синглтонов в TypeScript. Я мог бы также написать этот код как одноэлементный класс, например:
export default class Singleton {
private static instance: Singleton;
private name: string = "batman";
private constructor() { }
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
public getName() {
return this.name;
}
}
Я изо всех сил пытаюсь понять, зачем мне когда-либо создавать синглтон, поскольку в модуле меньше кода и, возможно, проще. Он также существует только в виде единственного экземпляра. Есть ли преимущества, которые предлагает синглтон?