TypeScript静态成员与名称空间与类名称
问题描述:
在TypeScript中,我一直在将非实例变量从我的类中分离出来,并将其与类相同的名称空间分隔开。例如: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,模拟静态通用成员或添加混入),则名称空间将不起作用 - 函数内不能包含名称空间。