在 TypeScript 中,我一直将非实例变量从我的类中分离出来,并放入与类同名的命名空间中。例如:
class Person
{
age: number;
constructor(age: number)
{
this.age = age;
}
}
namespace Person
{
export let numberOfFingers: number = 10;
}
export default Person;
与此相反:
class Person
{
static numberOfFingers: number = 10;
age: number;
constructor(age: number)
{
this.age = age;
}
}
export default Person;
这两种方法有什么好处吗?
最佳答案
就类型检查和代码生成而言,这两种方法产生的结果完全相同。我可以提供两个支持静态成员的不太有力的论据:
这是最明显的事情,它不需要语言高级部分的知识 (declaration merging) 来理解代码
如果您需要创建和返回类定义的函数(as described for example here,模拟静态泛型成员或添加混入),那么 namespace 将不起作用 - 您不能在内部使用 namespace 一个函数。
关于class - TypeScript 静态成员与带有类名的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106340/