TypeScript静态成员与名称空间与类名称

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,模拟静态通用成员或添加混入),则名称空间将不起作用 - 函数内不能包含名称空间。