Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
TypeScript:全局静态变量最佳实践_Typescript - Fatal编程技术网

TypeScript:全局静态变量最佳实践

TypeScript:全局静态变量最佳实践,typescript,Typescript,我有一个类,每次实例化该类时,我都需要增加一个数字。 我已经找到了两种方法,两种方法都有效,但我还不确定什么是最佳实践 在模块作用域中声明变量 module M { var count : number = 0; export class C { constructor() { count++; } } } 在类作用域中声明变量并在类上访问它 module M { export class C { static count : number

我有一个类,每次实例化该类时,我都需要增加一个数字。 我已经找到了两种方法,两种方法都有效,但我还不确定什么是最佳实践

  • 在模块作用域中声明变量

    module M {
      var count : number = 0;
      export class C {
        constructor() {
          count++;
        }
      }
    }
    
  • 在类作用域中声明变量并在类上访问它

    module M {
      export class C {
        static count : number = 0;
        constructor() {
          C.count++;  
        }
      }
    }
    
  • 我的示例是第二个,因为它没有在模块范围中添加count变量


    另请参见:

    方法2,因为它是使用变量的类。所以它应该包含它

    在案例1中,如果您使用的变量中包含多个类,则该变量将变得混乱,例如:

    module M {
    
      var count : number = 0;
    
      export class C {
        constructor() {
          count++;
        }
      }
    
      export class A{
      }
    }
    

    这两种方法都可以,但是
    方法2
    更具自解释性,这意味着当您的代码变得更复杂时,它就不那么容易混淆了,除非您每次从该模块实例化一个类时都使用
    计数
    ,那么
    方法1
    就是最好的选择

    我更喜欢这样做:

    module M {
      export class C {
        static count : number = 0;
        constructor() {
          C.count++;  
        }
      }
    }
    

    如果C类不是唯一一个使用计数的类,我就不会在包级别看到它。更重要的是变量名。在代码中的大多数地方,“count”这个名称并没有足够的信息来说明它代表了什么。我更喜欢“numConstructed”或“constructedCount”。同意,它们应该是具体的!这里使用的代码只是示例