我已经使用 Node.js/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;
}
}
我很难理解为什么要创建一个单例,因为模块更简洁易懂,只存在一个实例。不过,单例有哪些优点呢?