Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class TypeScript静态成员与具有类名的命名空间_Class_Typescript_Module_Namespaces - Fatal编程技术网

Class TypeScript静态成员与具有类名的命名空间

Class TypeScript静态成员与具有类名的命名空间,class,typescript,module,namespaces,Class,Typescript,Module,Namespaces,在TypeScript中,我将非实例变量从类中分离出来,并放入与类同名的命名空间中。例如: class Person { age: number; constructor(age: number) { this.age = age; } } namespace Person { export let numberOfFingers: number = 10; } export default Person; 与此相反: class

在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;

这两种方法都有好处吗

就类型检查和代码生成而言,这两种方法产生的结果完全相同。我可以为静态成员提供两个不太有力的论据:

  • 这是最明显的事情,它不需要了解语言()的高级部分来理解代码

  • 如果您需要一个创建并返回类定义的函数(用于模拟静态泛型成员或添加mixin),那么名称空间将不起作用-您不能在函数中包含名称空间