В КУРСЕ?

Разбираемся в теме

TypeScript принял тип: почему данные всё равно нужно проверять?

В программе описано, что количество предметов является числом, а внешняя система прислала строку. Разработчик добавляет утверждение типа, предупреждение исчезает, и кажется, что проблема решена. Но значение во время выполнения от этого не меняется. Для надёжной обработки данных полезно разделять сведения, которыми располагает компилятор, реальные проверки и требования предметной задачи.

Тип не является автоматическим преобразованием

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

Проверка уточняет, какие операции допустимы

Тип неизвестного значения можно постепенно сужать с помощью проверок и структуры управления. Например, различить строку и число до выбора дальнейшего действия. Однако проверка принадлежности к числам ещё не устанавливает пригодность для нашей задачи. Количество стульев в учебной модели должно быть целым, конечным и неотрицательным. Отрицательное число или дробное значение не подходит, хотя относится к числовому типу. Это уже правило предметной области. Полезно сформулировать его отдельно, чтобы не путать техническое распознавание значения с решением о допустимости заказа.

Преобразование требует явного решения

Можно решить, что строковые числа принимаются после отдельного преобразования. Но тогда нужно определить допустимый формат и поведение при ошибке. Другой разумный вариант учебной системы состоит в отказе от строк и требовании числа от отправителя. Важно, чтобы правило было явным и одинаковым для проверяемых случаев. Простое подавление предупреждения скрывает этот выбор. После изменения правила нужны примеры как допустимых, так и недопустимых данных. Успешная компиляция проверяет определённые свойства программы, но не доказывает, что все внешние ответы корректны и все требования предметной области выполнены.

Попробуйте на практике

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

  1. Запишите правило учебной системы: принимается только конечное целое неотрицательное число, строки автоматически не преобразуются. Отдельно отметьте, что ноль допустим как отсутствие потребности в стульях.
  2. Подготовьте четыре входных случая словами: число три, строка с цифрой три, число минус один и число два с половиной. Для каждого обозначьте техническую разновидность значения и соответствие правилу задачи.
  3. Определите ожидаемый результат: принять число три, отклонить строку по правилу формата, отклонить отрицательное и дробное значения по содержательному ограничению. Не объединяйте все причины в неопределённую ошибку.
  4. Добавьте случай нуля и проверьте, что он не теряется из-за проверки только на истинность значения. Затем запишите, какие изменения понадобились бы, если система решила поддержать строковый формат через явное преобразование.

Как проверить результат. Правила различают утверждение типа, распознавание значения и проверку допустимости. Ноль принят, неподходящие случаи отклонены по понятным причинам, а преобразование строки не приписано одному объявлению типа.

Частые вопросы

Утверждения типов всегда нужно запрещать?

Нет. Они могут быть уместны, когда разработчик располагает обоснованными сведениями, недоступными компилятору. Но это не инструмент проверки недоверенных внешних данных.

Проверка на истинность подходит для любого количества?

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

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

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов