我已经使用 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;
}
}
我很难理解为什么我会创建一个单例,因为该模块的代码更少并且可以说更简单。它也仅作为单个实例存在。单例有什么好处吗?
最佳答案
是的,模块要简单得多,并且在许多情况下是更好的选择。但是,单例有两个优点:
class
,如果需要多个实例。 (如果您的实例是有状态的 - 与您示例中的代码不同,这种情况实际上经常发生)。 关于javascript - 单例比 TypeScript 中的模块有优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61623424/