Heap.Optional

Делает поле объекта опциональным (добавляет ? к результирующему типу свойства объекта).

Опциональные поля можно не указывать при создании записи, при этом они не будут принимать никакого значения по умолчанию (ключа просто не будет в объекте, обращение к нему будет возвращать значение undefined).

При чтении (десериализации) записи, для опциональных полей значение по умолчанию (параметр default) всегда игнорируется.

Уже заданное значение опционального поля верхнего уровня может быть сброшено, если в операции update передать значение null. Эта возможность не работает для nullable полей, поэтому следует избегать применять модификатор Optional к Union-полям с возможным значением null.

Модификатор Heap.Optional поддерживается и имеет смысл только для полей Heap.Object и полей верхнего уровня таблицы.

Применение / сигнатура

import { Heap } from '@app/heap'
Heap.Optional(fieldSchema)

Аргументы

  • fieldSchema: HeapSchema *
    Схема, описывающая "значимый" тип поля, которое делаем опциональным. Это может быть любой поддерживаемый тип поля heap-таблицы - простой или сложный.

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

Аргумент fieldSchema c модификатором Optional.

Примеры

Целочисленное опциональное поле и его очистка
const customers = Heap.Table('customers', {
  name: Heap.String(),
  age: Heap.Optional(Heap.Number()),
})
await customers.create(ctx, { name: 'John Smith' })
// age = undefined
const mary = await customers.create(ctx, { name: 'Mary', age: 22 })
// age = 22
// Optional-поля принимают на вход null для сброса значения в undefined
await customers.update(ctx, { id: mary.id, age: null })
// age = undefined

❤️ Made with love on Chatium

ООО "Чатиум"

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