45

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

  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++;  
        }
      }
    }
    

我的例子是第二个例子,因为它没有在模块范围内添加 count 变量。

另请参阅:C# 在实例化时增加静态变量

4

2 回答 2

35

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

在情况 1 中,您使用的变量会在您有多个类时变得混乱,例如:

module M {

  var count : number = 0;

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

  export class A{
  }
}
于 2013-05-09T14:00:05.183 回答
2

它们都可以,但method 2更容易解释,这意味着当你的代码变得更复杂时它会减少混乱,除非你count每次从该模块实例化一个类时都使用增加,那么method 1这是要走的路。

我更喜欢这样做:

module M {
  export class C {
    static count : number = 0;
    constructor() {
      C.count++;  
    }
  }
}
于 2016-03-22T12:57:05.013 回答