Главная Категории Контакты Поиск

Числовые разделители TypeScript

Улучшение читаемости больших чисел с помощью числовых разделителей TypeScript.

TypeScript·24.10.2019·читать 1 мин 🤓·Автор: Alexey Myzgin

При просмотре больших чисел в коде (например, 1800000) человеческому глазу трудно быстро увидеть, насколько велико число на самом деле. TypeScript позволяет нам использовать числовые разделители для записи чисел в более читабельном формате (например, 1_800_000), сохраняя при этом сгенерированный JavaScript без изменений.

Если бы у нас было огромное число (например число населения земли) то, было бы трудно с первого взгляда сказать, насколько значительным оно является на самом деле.

// население земли 7725775973

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

// население земли 7,725,775,973

Теперь, начиная с TypeScript 2.7, мы можем добавлять подчеркивания в качестве числовых разделителей к числам в коде:

// население земли 7725775973

const worldPopulation = 7_725_775_973;

Это не только делает код более читабельным, но и никак не влияет на конечный результат. Если мы посмотрим на результат в JavaScript, то увидим, что все подчеркивания скомпилированы.

// население земли 7725775973
var worldPopulation = 7725775973;

Как локально настроить TypeScript можно почитать здесь или открыть онлайн компилятор.

TypeScript также не заставляет использовать эту функцию особым образом. Можно добавить подчеркивания после каждого числа и даже добавить их после десятичной точки.

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

Для более реального примера используем class AmountInput. Вверху создаём private static запись, чтобы указать поддерживаемую сумму MAX_ALLOWED и amount типа number для хранения введенной суммы.

class AmountInput {
  private static MAX_ALLOWED = 99_999_999;

  amount: number = 0;
}

Также создаём метод showTooltip, который в свою очередь создаёт всплывающую подсказку, а затем скроет её через несколько секунд. Добавляем метод formatMillion, который берёт текущую сумму и возвращает отформатированную строку в миллионах.

class AmountInput {
  private static MAX_ALLOWED = 99_999_999;

  amount: number = 0;

  showTooltip() {
    setTimeout(() => {
    }, 2_500);
  }

  formatMillion() {
    return this.amount / 1_000_000 + "M";
  }
}

Несмотря на то, что мы добавили всего несколько подчеркиваний к числам в этом классе, мы сделали общее восприятие чтения немного более легким.

Website, name & logo
Copyright © 2022. Alex Myzgin