Heap - API объявления таблиц

Объект Heap, импортируемый из модуля @app/heap, предоставляет доступ к DSL (domain-specific language) объявления heap-таблицы. С помощью него формируются одновременно Typescript-тип записи таблицы и JSON-схема, которая используется для валидации сохраняемых в таблицу данных. Ниже перечислены все доступные функции объекта Heap:

Функции

Функция объявления таблицы

  • Heap.Table — главный и единственный способ объявить heap-таблицу.

Функции объявления базовых простых типов

  • Heap.Boolean

  • Heap.Number

    • Heap.Integer — number с валидацией на целочисленность.
  • Heap.String

    • Heap.NonEmptyString — строка, которая не может быть пустой или содержать только пробельные символы.
    • Heap.RegEx — синтаксический сахар для строки с валидацией с помощью регулярного выражения.

Функции объявления базовых составных типов

  • Heap.Array — массив с заданным типом элементов.
  • Heap.Object — вложенный объект с заданной структурой.
  • Heap.Record — вложенный "map" с заданным типом ключей и значений.
  • Heap.Tuple — кортеж, массив фиксированной длины с заданными типами для каждой позиции.
  • Heap.Union — один из нескольких заданных альтернативных типов, полный аналог Typescript union.
  • Heap.Enum

Функции-модификаторы типов полей объекта

  • Heap.NonRequired — разрешает не указывать "обязательное" поле при операции create, автоматически заполняя его указанным значением по умолчанию.
  • Heap.Nullable — синтаксический сахар к Heap.NonRequired(Heap.Union(x, Heap.Null()), null).
  • Heap.Optional — делает поле объекта необязательным (добавляет "вопросик" x Heap.String() -> x? Heap.String()).

Функции объявления дополнительных "умных" типов

  • Heap.DateTime — стандартный js Date.
  • Heap.Money — представление денежной суммы через специальный класс Money.
    • Heap.Currency — вспомогательный тип, строка из трёх заглавных латинских букв (международный код валюты), используется внутри схемы Heap.Money.
  • Heap.File — представление файла, загруженного в файловое хранилище, через специальный класс StorageFile.
    • Heap.ImageFile — файл изображения, загруженный в хранилище. Представлен через специальный класс StorageImageFile с дополнительными удобными методами для работы с изображениями.
    • Heap.VideoFile — файл видео-ролика, загруженный в хранилище. Представлен через специальный класс StorageVideoFile с дополнительными удобными методами для работы с видео.
    • Heap.AudioFile — файл аудиозаписи, загруженный в хранилище. Представлен через специальный класс StorageAudioFile с дополнительными удобными методами для работы с аудио.

Функции объявления ссылок на другие записи таблиц

  • Heap.RefLink — ссылка на запись конкретной heap-таблицы.
  • Heap.GenericLink — ссылка на запись любой heap-таблицы.

Функции объявления вспомогательных простых типов

  • Heap.Any — Typescript any - позволяет хранить любые JSON-сериализуемые данные без валидации.
  • Heap.Literal — Typescript-литерал, обычно используется для объявления альтернатив внутри Heap.Union.
  • Heap.Null — буквально null, обычно используется для объявления альтернативы внутри Heap.Union.
  • Heap.Undefined — буквально undefined, использование не рекомендуется, поскольку undefined не может быть сохранён в JSON.
  • Heap.Unknown — Typescript unknown - аналогично Heap.Any.

Функции преобразования существующих типов (схем)

  • Heap.Intersect — объединяет несколько существующих схем Heap.Object, Heap.Record в одну аналогично операции intersect (A & B) над типами в Typescript.
  • Heap.KeyOf — возвращает схему набора ключей входящей схемы Heap.Object.
  • Heap.Omit — исключает заданный набор ключей (полей) входящей схемы Heap.Object, аналогично встроенному в Typescript типу Omit.
  • Heap.Partial — превращает все поля входящей схемы Heap.Object в необязательные, аналогично встроенному в Typescript типу Partial.
  • Heap.Pick — возвращает схему, включающую только заданные поля из входящей схемы Heap.Object, аналогично встроенному в Typescript типу Pick.
  • Heap.Required — превращает все необязательные поля входящей схемы Heap.Object в обязательные, аналогично встроенному в Typescript типу Required.

❤️ Made with love on Chatium

ООО "Чатиум"

Информация о компании