Иногда нам может понадобиться объявить статические константы в наших классах JavaScript.

В этой статье мы рассмотрим, как объявлять статические константы в классах ES6.

Добавить геттеры в наш класс

Чтобы объявить статические константы в наших классах ES6, мы можем объявить константы вне класса и добавить геттеры, которые возвращают константы в нашем классе.

Например, мы можем написать:

const constant1 = 3,
  constant2 = 2;
class Example {
  static get constant1() {
    return constant1;
  }
  static get constant2() {
    return constant2;
  }
}
console.log(Example.constant1)
console.log(Example.constant2)

Мы объявляем constant1 и constant2 .

Затем в классе Example мы создаем геттеры constant1 и constant2.

Мы добавляем ключевое слово static перед get, чтобы сделать его статическим.

Затем в функции получения мы возвращаем значения constant1 и constant2 соответственно.

Точно так же мы можем написать:

class Example {
  static get constant1() {
    return 3
  }
  static get constant2() {
    return 2
  }
}
Object.freeze(Example);
console.log(Example.constant1)
console.log(Example.constant2)

что эквивалентно тому, что мы написали выше.

Поэтому, когда мы регистрируем значения Example.constant1 и Example.constant2 , мы видим 3 и 2 соответственно.

Object.freeze

Мы можем заморозить класс, чтобы сделать весь класс неизменяемым.

Для этого пишем:

class Example {}
Example.constant1 = 3
Example.constant2 = 2
Object.freeze(Example);
console.log(Example.constant1)
console.log(Example.constant2)

Мы добавляем наши статические свойства с помощью:

Example.constant1 = 3
Example.constant2 = 2

Это работает, поскольку классы являются функциями-конструкторами, которые являются объектами.

Это также означает, что мы можем использовать метод Object.freeze для Example, чтобы сделать класс Example неизменяемым.

Таким образом, мы можем регистрировать значения свойств Example.constant1 и Example.constant2 и получать их значения.

Мы должны увидеть 3 и 2 соответственно.

Заключение

Мы можем объявить статические константы в нашем классе JavaScript, объявив статические геттеры, которые возвращают константы, объявленные вне класса.

Кроме того, мы можем заморозить класс с помощью метода Object.freeze, так как это обычный объект.

Это делает класс неизменяемым.

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.