[英]Should I be using a Class or an Object Literal when implementing a singleton in JS?
在使用 TypeScript 和 React 創建 Web 應用程序時,我經常發現自己需要使用基於單例的模式。 以前我總是像這樣用對象字面量來實現這些:
interface IExample {
var_one: string;
var_two: boolean;
func_one: () => void;
func_two: () => void;
}
const Example:IExample = {
var_one: "",
var_two: false,
func_one() {
return;
},
func_two() {
return;
}
}
我更願意使用基於類的系統,但想知道這是否有任何缺點,或者每種系統的優缺點是什么。 一個例子是:
class ExampleClass
{
private static _instance:ExampleClass = new ExampleClass();
constructor() {
if(ExampleClass._instance){
throw new Error("Instance already created");
}
ExampleClass._instance = this;
}
}
我以前只在我的代碼中真正使用過對象文字模式,但如果兩者之間沒有什么區別,我更願意使用基於類的系統。
我同意更喜歡使用類。 我可以想到類提供的一些使用 pojo 所沒有的明顯優勢:
extend
和super
化它。object factory
行為的更簡單語法。我會說你計划讓它變得越復雜 - 一個類的選擇就越明顯。 在 javascript 中——幾乎所有東西都已經是一個對象和類,只需添加幾個快捷方式。 使用 pojo 的唯一優勢是語法簡單。
您可能有興趣了解模塊已經是單例,因此您可以利用模塊系統來實現您的需要。
export class MyClass {
constructor(readonly foo: string) {}
}
export const instance = new MyClass("bar");
在您的消費模塊中,您可以導入類或您的單例實例。
import { instance } from "./lib";
instance.foo // bar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.