在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;
这两种方法都有什么好处吗?
答案 0 :(得分:2)
就类型检查和代码生成而言,两种方法都会产生完全相同的结果。我可以提供两个不太强烈的论据来支持静态成员:
这是最明显的事情,它不需要知道语言的高级部分(declaration merging)来理解代码
如果你需要一个创建并返回类定义的函数(as described for example here,模拟静态泛型成员或添加一个mixin),那么命名空间将不起作用 - 你可以'在函数中有命名空间。