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

时间:2013-05-09 13:21:54

标签: typescript

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

  1. 在模块范围中声明变量

    module M {
      var count : number = 0;
      export class C {
        constructor() {
          count++;
        }
      }
    }
    
  2. 在类范围内声明变量并在Class

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

    另请参阅:C# incrementing static variables upon instantiation

2 个答案:

答案 0 :(得分:32)

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

在案例1中,您使用的变量一旦您有多个类就会变得混乱,例如:

module M {

  var count : number = 0;

  export class C {
    constructor() {
      count++;
    }
  }

  export class A{
  }
}

答案 1 :(得分:2)

它们都没问题,但是method 2更加自我解释,这意味着当你的代码变得更加复杂时它会变得更加混乱,除非你每次使用count增加实例化一个类时都会增加模块然后method 1是要走的路。

我更喜欢这样做:

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