带有静态方法的类与导出函数的打字稿

时间:2019-03-13 18:45:39

标签: typescript

我一直在尝试对此进行研究,但找不到任何建议。我继承了一个代码库,其中团队使用带有静态方法的类,而不是辅助方法的函数。我从未见过采用这种方法并试图决定是否应该让它们返回并使用它们创建函数。我感觉这是不干净的,并且导入很膨胀,因为您要导入整个类,而不仅仅是要输入的功能?

一种方法是否比另一种更好?

例如,以防万一我不清楚:

    export class StringUtil {
      public static alterString(str: string) {
        return alteredString;
      }
    }

vs

    export function alterString(str: string) {
      return alteredString;
    }

然后将这样使用它:

import { StringUtil } from '../StringUtil';

getString(str: string) {
  return StringUtil.alterString(str);
}

vs

import { alterString } from '../helper-functions';

getString(str: string) {
  return alterString(str);
}

1 个答案:

答案 0 :(得分:3)

从功能上讲,这两种实现都将产生相同的结果,唯一的区别是对于静态方法,该函数已附加到类的原型上。如果您实际上不需要这种行为(不太可能需要这样做),我会将静态方法保留为单独的函数,因为这对于摇树和代码拆分更好(尽管您有很多静态方法,但是这些只会是次要的收获)。在实践中,我发现静态方法通常仅出于两个原因出现:(1)编写代码的人都是Java使用者;(2)一些IDE发出警告,如果它们不使用实例变量,则应将方法标记为静态。

如果只希望具有为一堆静态方法命名空间的功能,则仍然可以通过导出带有所有附加功能的对象来实现。