我应该更喜欢具有静态函数的名称空间或类吗?

时间:2018-05-18 16:41:33

标签: typescript

在TypeScript中,有两种可能的方法来捆绑和公开一组函数。一种方法是导出一个只包含公共静态函数的类。另一种方法是创建一个名称空间,然后从中导出函数。尽管我可以说它在TypeScript中产生了相同的行为(尽管可能会生成不同的JavaScript。)是否有一种方法是首选的,或者它是否几乎取决于个人偏好。

namespace MyCollection {
    export function doSomething(macguffin: any) {
        //todo: implement doSomething
    }
}

export class MyCollection {
    public static doSomething(macguffin: any) {
        //todo: implement doSomething
    }
}

1 个答案:

答案 0 :(得分:4)

最好使用模块而不是命名空间或静态类方法。来自namespaces and modules上的TypeScript官方文档页面:

  

命名空间只是全局命名空间中的JavaScript对象。 [...]就像所有全局命名空间污染一样,很难识别组件依赖性,尤其是在大型应用程序中。

     

[...]

     

模块可以为捆绑提供更好的代码重用,更强的隔离和更好的工具支持。

     

[...]

     

从ECMAScript 2015开始,模块是该语言的本机部分,并且应该得到所有兼容引擎实现的支持。因此,对于新项目,模块将是推荐的代码组织机制。