function optional
optional<T>(field: XmlField<T>): XmlField<T> & { optional: true; }

Marks a field as possibly missing: it reads as absent instead of throwing, and is not written when absent.

Examples

Read a missing optional field

import { assertEquals } from "@std/assert";
import { parse } from "@std/xml";
import { int, optional, xmlParam } from "@hertzg/reolink-api/protocol/xml";

const port = xmlParam("RtmpPort", { rtmpPort: int(), enable: optional(int()) });
const root = parse("<RtmpPort><rtmpPort>1935</rtmpPort></RtmpPort>").root;

assertEquals(port.decode(root), { rtmpPort: 1935 });

Type Parameters

Parameters

field: XmlField<T>

The field codec.

Return Type

XmlField<T> & { optional: true; }

The same codec, marked optional.

Usage

import { optional } from "protocol/xml.ts";