Объявляет поле-объект, который моделирует "map" из одного заданного типа (ключей) в другой (значений). Аналог типа Record в Typescript.
import { Heap } from '@app/heap'
Heap.Record(keySchema, valueSchema, options)
keySchema: HsString | HsNumber |
HsKeyOf | HsUnion *
Схема, описывающая тип ключа.
Это может быть схема строки, числа, либо схема какого-либо объединения (union) строковых или числовых литералов. В любом случае - в качестве ключей поддерживаются только простые строки и числа.
Схемы с модификаторами Heap.Optional и Heap.NonRequired не поддерживаются и приведут к рантайм-ошибке, т.к. не имеют смысла в данном контексте.
valueSchema: HeapSchema *
Значениями могут быть любые поддерживаемые схемы, которые можно объявить с помощью функций объекта
Heap (кроме тех, что объявляют/модицифируют целые таблицы).
Схемы с модификаторами Heap.Optional и Heap.NonRequired не поддерживаются и приведут к рантайм-ошибке, т.к. не имеют смысла в данном контексте.
options: {
default}
Объект с дополнительными необязательными параметрами поля.
object
Изменение свойства additionalProperties
из JSON-схемы не поддерживается. Если на вход
подать объект с ключами, не соответствующими схеме, произойдёт ошибка валидации.
JSON-схема для object
с additionalProperties=false
и patternProperties
, соответствующим заданным схемам ключей и значений.
const ratesHistory = Heap.Table('ratesHistory', {
rates: Heap.Record(Heap.String(), Heap.Number()),
})
const seaBattleMaps = Heap.Table('seaBattleMaps', {
matrix: Heap.Record(Heap.RegEx(/^[a-j][0-9]$/), Heap.Boolean()),
})
const formSchema = Heap.Object({
field1: Heap.String(),
field2: Heap.Number(),
})
const quizes = Heap.Table('quizes', {
fieldsState: Heap.Record(Heap.KeyOf(formSchema), Heap.Boolean()),
})
const ratesHistory = Heap.Table('ratesHistory', {
rates: Heap.Record(
Heap.Union([Heap.Literal('USD'), Heap.Literal('EUR')]),
Heap.Money(),
),
})