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