Returns the CBOR tags associated with this type.
This method should return an array of tags in order of preference:
The first tag in the array is the "preferred" tag and will be used
when encoding values of this type via
CborTaggedEncodable.taggedCbor().
All tags in the array are considered equivalent for decoding. When
CborTaggedDecodable.fromTaggedCbor() is called, any tag in this
array will be accepted as valid for this type.
This design enables backward compatibility: you can introduce a new tag (placed first in the array) while still supporting older tags for decoding.
For standard CBOR tags, you can use predefined tag constants from the
tags module, or create custom tags with createTag().
Interface for types that have associated CBOR tags.
In CBOR, tags provide semantic information about how to interpret data items. This interface defines which CBOR tag(s) are associated with a particular TypeScript type.
Implementing this interface is a prerequisite for implementing
CborTaggedEncodableandCborTaggedDecodable.Multiple Tags for Backward Compatibility
The
cborTags()method returns an array of tags, enabling support for backward compatibility with older tag versions:This design solves several real-world problems:
IANA Registration Simplification: If you initially choose a tag in the Specification Required range (24-32767) and later want to move to the simpler First Come, First Served range (32768+), you can migrate while maintaining compatibility with existing data.
Protocol Evolution: As your protocol evolves, you can introduce new preferred tags while still supporting data encoded with older tags.
Versioning: Different tags can represent different versions of your data format while sharing the same TypeScript type for handling.
Example