Библеотека для тестирования и генерации занчений по заданой типом структуре
Эта функция принимает три аргумента: Первое это имя типа. Второе это конструктор типа. Третий конструктор типа из JSON.
Сам тип состоит из трех функций: Генератор значений Валидатор Преобразователь типа в JSON Отключение тестов Это свойство представленное изнутри геттером и сеттером, которое если равно False, отключит все тесты, они будут возвращать по умолчанию так же значение False без каких либо реальных проверок.
Обычный булев тип
Обычное дробное число, реальный максимум зависит от движка, но нужен не для этого. Нужен для того чтобы дать конкретные ограничение размеру числа, потому что реальные объекты обычно не имеют каких сверх больших значений, и у любого объекта есть свои пределы. Если эти пределы неизвестны, то это говорит о плохо спроектированных алгоритмах, потому в реальности ограничение у чисел все равно будет, просто будет зависеть от платформы, а не от программиста. Принимает три параметра: Максимум, Минимум и Количество знаков после десятичной запятой. Index Этот тип служит для индексации. Диапазон от нуля до максимума принимаемого как аргумент при определении типа в целых числах. Причем максимальное число никогда не будет достигнуто.
Просто диапазон дробных значений от 0 до 1, точность значения в данном случае будет возложена на платформу, так как обычно это какой диапазон чисел отображенный на отрезок от 0 до 1, в этом случае этот тип лучше не использовать, а использовать изначальный диапазон, например для цвета это от 0 до 255. Но если важно именно такое абстрактное значение, то ограничение на количество десятичных цифр будет только мешать.
Строка максимальной длиной 256 состоящая из символов a-zA-Z0-9_, дающий максимально совместимый строковой тип, предназначенный для идентификации структуры. Аргументов у конструктора никаких нет.
Тип для uuid Это обертка над библеотекой https://www.npmjs.com/package/uuid Для генерации используется uuid v4
Этот тип работает со строками, числами, Boolean, “null”, “undefined”, просто оборачивая их в тип который по сути является константным значением которое всегда может быть сравнено напрямую.
Это мета-тип обрабатывающий объекты, конструктор принимает лишь одно значение, это объект по которому будет создан шаблон Объекта. Вторым необязательным аргументом указываеться должен ли тестр типа игнорировать "лишнии" свойтсва в проверямом объекте Все вложенные объекты в том числе массивы будут обработаны рекурсивно этим же конструктором. Если требуется иное поведение, то массив для начала стоит привести к типу. Хотя включение функций вообще не рекомендуется в структуру, тем не менее функция в объекте будет обработана конструктором типа Const Типы содержащиеся в этом объекте будут включены в шаблон без обработки. Все значения не имеющие внутренней структуры объекта(строки, числа и т. д.), будут обработаны конструктором типа Const Если внутри объекта будет найдена ссылка на сам этот объект, или другие циклические зависимости, все они будут проигнорированы, как во время генерирования объектов, так и во время проверки объектов на соответствие типу. Старайтесь избегать циклических зависимостей в структуре.
Объединение типов, при этом значение должно отвечать структуре одно из перечисленных типов. На вход конструктор типа принимает первым аргументом массив типов и констант. Констаные значения будут переданы в конструктор констатного типа автоматически Вложенные массивы и обьекты будут преобразовываться в тип обьекта
Тип массива, подразумевает что все элементы в массиве одного типа, конструктор типа принимает на вход тип, длину массива, и может ли массив быть пустым. Сам массив может быть меньшей длины чем максимальная длина. Первый аргумент не может быть ничем кроме типа.
Тип строки, его конструктор принимает символьный класс и максимальный размер строки в качестве аргументов. Символьный класс это строка являющаяся способом перечислить допустимые символы, по факту будет обернута в в регулярное выражение /^[simbol_class]&/, при этом вы не можете использовать отрицание в начале символьного класса как это делается с регулярными выражениями.
Этот тип предназначен для создания структуры которая зависит от ключевого свойства, которое и решает какого типа структура будет. Конструктор типа принимает два аргумента. Первый аргумент это либо одно значения типа Key, либо массив таких значений. Это набор ключевых свойств объекте отвечающих за тип структуры объекта. Второй аргумент это массив объектов, каждый из станет типом структуры. Поэтому каждый объект должен обязательно содержать ключевое свойство(свойства) со значением типа Key, остальные свойства должны быть типами.