Typescript 和 AngularJS - 静态方法与服务

Dot*_*rog 5 static angularjs typescript angularjs-service

TL;DR:与 angular 无关的静态基本功能 - 实现为 AngularJS 服务还是普通的静态导出类/方法?

长版:我已经在 TS 中编程大约一个月了,因为我们正在重构我们的应用程序以使用 TS(为 angular 2.0 做准备)。当开始了解我们的一些基本 Angular 服务时,我在想——因为实现静态类和方法很容易——也许我们的一些服务根本不应该是服务。当然,以某种方式与角度有关的任何功能都必须作为服务来实现。例如,ColorConverter 或 ColorPicker——今天我们应用程序中的 angularjs 服务实现了不会改变或与 angular 或任何共享外部资源有关的静态逻辑——可以很容易地替换为导出静态函数的静态模块。我办公室里有人提出支持 Angular 服务的一个论点是,稍后我们可以轻松地嘲笑这个逻辑。但是为什么我要模拟不会更改且不访问任何外部资源的静态逻辑?一分钱你的想法。

Nic*_*aux 4

无论是Java还是其他语言,这个问题都是一样的。静态方法很难扩展和模拟,这就是为什么您应该使用服务而不是静态方法。

例如,如果您对 ColorConverter 使用静态方法,则无法扩展其行为以实现应用程序中所需的新功能(支持其他颜色范围或其他)。

以下答案为其他语言添加了一些也适用于 TypeScript 的元素。

Java静态方法的优缺点

何时在 C# 中使用静态类