在TypeScript中,有两种可能的方法来捆绑和公开一组函数。一种方法是导出一个只包含公共静态函数的类。另一种方法是创建一个名称空间,然后从中导出函数。尽管我可以说它在TypeScript中产生了相同的行为(尽管可能会生成不同的JavaScript。)是否有一种方法是首选的,或者它是否几乎取决于个人偏好。
namespace MyCollection {
export function doSomething(macguffin: any) {
//todo: implement doSomething
}
}
export class MyCollection {
public static doSomething(macguffin: any) {
//todo: implement doSomething
}
}
答案 0 :(得分:4)
最好使用模块而不是命名空间或静态类方法。来自namespaces and modules上的TypeScript官方文档页面:
命名空间只是全局命名空间中的JavaScript对象。 [...]就像所有全局命名空间污染一样,很难识别组件依赖性,尤其是在大型应用程序中。
[...]
模块可以为捆绑提供更好的代码重用,更强的隔离和更好的工具支持。
[...]
从ECMAScript 2015开始,模块是该语言的本机部分,并且应该得到所有兼容引擎实现的支持。因此,对于新项目,模块将是推荐的代码组织机制。