Heap.Record

Объявляет поле-объект, который моделирует "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}
    Объект с дополнительными необязательными параметрами поля.

    Изменение свойства additionalProperties из JSON-схемы не поддерживается. Если на вход подать объект с ключами, не соответствующими схеме, произойдёт ошибка валидации.

Возвращаемое значение

JSON-схема для object с additionalProperties=false и patternProperties, соответствующим заданным схемам ключей и значений.

Примеры

Простой map из строки в число
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()),
})
Ключи определены через Heap.Union
const ratesHistory = Heap.Table('ratesHistory', {
  rates: Heap.Record(
    Heap.Union([Heap.Literal('USD'), Heap.Literal('EUR')]),
    Heap.Money(),
  ),
})

❤️ Made with love on Chatium

ООО "Чатиум"

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