Подтвердить что ты не робот

TypeScript: глобальная статическая переменная

У меня есть этот класс, где мне нужно увеличивать число каждый раз, когда экземпляр класса создается. Я нашел два пути для этого, где работают оба способа, но я еще не уверен в том, что является наилучшей практикой.

  • объявить переменную в области видимости модуля

    module M {
      var count : number = 0;
      export class C {
        constructor() {
          count++;
        }
      }
    }
    
  • объявить переменную в области видимости класса и получить доступ к ней в классе

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

Мой ответ - пример второй, так как он не добавляет переменную count в область видимости модуля.

См. также: С# приращение статических переменных при создании экземпляра

4b9b3361

Ответ 1

Определенно метод 2, так как это класс, который использует переменную. Поэтому он должен содержать это.

В случае 1 вы используете переменную, которая станет запутанной, если у вас есть несколько классов, например:

module M {

  var count : number = 0;

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

  export class A{
  }
}

Ответ 2

Оба они в порядке, но method 2 больше объяснений, что означает, что он менее запутан, когда ваш код становится более сложным, если вы не используете count для увеличения при каждом экземпляре класса из этого модуля, а затем method 1 - это путь.

Я предпочитаю делать это следующим образом:

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