2024-09-02 12:36
大家剛開始學習程式的時候或多或少都學習過一些Design Pattern, 例如Singleton或Dependency Injection(DI), 今天介紹一個由Microsoft開發的Open Source, TSyringe主要透過Typescript實現了輕量級的DI, 透過TSyringe可以輕鬆地讓Codebase更加簡潔
我們只需要在typescript class上加入`@injectable()`或`@singleton()`就可以透過TSyringe來管理該class的生命週期, 並且就可以在想使用的class的constructor中直接inject, 除了實現DI以外, 還能避免手動處理class之間的依賴關係
在沒有使用TSyringe時, codebase中的utils或services往往需要頻繁的通過new來建立instance才能使用, 或者需要自己實現singleton的方法, 這些做法可能會在runtime產生出額外的記憶體又或者造成更嚴重的memory leak等