我有几个无状态类可以执行一些业务逻辑并返回一些计算。他们中的每一个都有其他类的依赖。
现在我有两种设计:
有一个类,其中每个方法都是静态方法。我可以使用jest import mocking来覆盖测试的依赖项。优点是你只有一个类实例。
拥有一个使用常规非静态方法的类。这将需要在使用它的每个地方实例化类。我可以在构造函数中传入类依赖项。测试这非常简单。缺点是你在代码中创建了多个类实例和潜在的依赖项。
其中哪一种是首选的惯用TS方法?
还有使用IoC容器的经典解决方案,但我想避免这种情况,因为这个应用程序相当小,并且不想添加额外的膨胀。
此外,不想一直导出纯函数和放弃类,因为这意味着我将失去类的自动导入(在VSCode中)。
答案 0 :(得分:0)
此外,不想一直导出纯函数和放弃类,因为这意味着我将失去类的自动导入(在VSCode中)。
你能解释一下这是什么"自动导入类(在VSCode中)"?在VSCode中,我使用TypeScript Importer等扩展程序为任何类型添加适当的导入(class
,function
,literal
...),不仅仅是类。
无论如何,IMO,它是纯粹的功能"方法是更惯用的JavaScript,至少对那些喜欢JavaScript函数编程功能的人(包括我)来说。它对TypeScript也是如此,即使它对类和C#/类似Java的面向对象编程表示同情。
如果你真的喜欢上课,请避免静态,即选项#1。您可以在引导应用程序时实例化和共享实例(就像DI容器一样)以避免多实例。
类之间的耦合在TypeScript中不是问题,因为它的结构类型:类可以充当接口→如果类A依赖于类B,则可以始终向类A实例提供类B类对象。