Соглашения о проверках
Большая часть библиотеки — это проверки, и почти все они подчиняются одной схеме имён. Выучите четыре префикса один раз, и имя функции само расскажет её сигнатуру, возвращаемое значение и то, может ли она бросить исключение.
Четыре префикса
Префикс | Отвечает на вопрос | Возвращает | Бросает |
|---|---|---|---|
| Является ли значение |
| Нет |
| Значение не является |
| Нет |
| Дай мне это значение как | значение с типом | Да, если это не |
| Дай мне значение, зная, что это не | значение с исключённым | Да, если это |
Пара isX и nonX — предикаты: они отвечают на вопрос и никогда не прерывают выполнение. Пара requireX и requireNonX — утверждения: они возвращают значение, чтобы вызов можно было встроить в выражение, либо бросают исключение.
Предикаты сужают типы
Стражи isX объявлены как type predicates в TypeScript, поэтому внутри ветки компилятор сужает тип значения:
nonX сужает в обратную сторону — он убирает X из типа, а не подтверждает его:
Запись nonX(value) — та же проверка, что и !isX(value). Смысл префикса в том, что охранное условие читается как утверждение, а не как отрицание, — и это заметно там, где альтернатива выглядела бы как if (!isConsistent2DArray(rows)).
Утверждения возвращают значение
requireX проверяет и возвращает, поэтому вызов встраивается в выражение, а не требует отдельного оператора:
У каждой функции requireX есть необязательный последний аргумент message — сообщение исключения на случай неудачной проверки:
Какое исключение бросает каждая из них, перечислено в Обработка исключений.
X и XLike
Некоторые предикаты существуют в строгой и мягкой форме. Простое имя проверяет тип, суффикс Like — можно ли использовать значение как этот тип:
Функция | Принимает |
|---|---|
| любое значение, у которого |
| конечные числа и непустые строки, которые превращаются в конечное число |
| любое не-nil значение, у которого |
| то же плюс функции |
| значения с тегом функции, генератора, асинхронной функции или прокси |
| любое не-nil значение, у которого |
Форма Like нужна там, где значение пришло из ячейки таблицы, из ответа формы или из параметра URL, — там число обычно приходит строкой.
Null, undefined и nil
Три имени покрывают пустые случаи, и различие между ними точное:
Функция | Истинна для |
|---|---|
| только |
| только |
| для любого из двух |
requireNonNull — утверждение в паре с isNil, а не с isNull: оно отвергает и null, и undefined и бросает NullPointerException:
isEmpty — проверка ещё более широкая. Она истинна для null и undefined, для пустой строки и строки из одних пробелов, для пустого массива, для Set или Map нулевого размера и для простого объекта без перечислимых свойств. Для всего остального, включая 0 и false, она ложна. Передайте вторым аргументом true, чтобы пустой считалась только строка нулевой длины:
Покрытие
Четыре префикса описывают сетку, и заполнена она почти целиком: у каждого типа с isX есть nonX, requireX покрывает типы, которые обычно и проверяют при вызове, а requireNonX существует для всего lang/base и для числовых видов. Отсутствующая комбинация отсутствует потому, что ещё никому не понадобилась, а не потому, что запрещена: заведите issue — её добавят.
У каждой функции из справочника есть собственная страница, и каждая страница порождается символом, который пакет действительно экспортирует, — значит, имя из таблицы можно импортировать.
Одно исключение из правила
nonEmptyString соглашению не подчиняется. Несмотря на префикс non, она проверяет и возвращает значение, а при неудаче бросает исключение, — то есть это функция requireX под неверным именем. Она объявлена устаревшей в пользу requireNonEmptyString, которая делает то же самое под правильным именем, и будет удалена в одном из будущих мажорных выпусков.
Эта документация сгенерирована нейросетью (Claude) на основе исходного кода библиотеки.