{
type: "int";
size?: 8 | 16 | 32; // default: 8
signed?: boolean; // default: false
}
{
type: "float";
size?: 32 | 64; // default: 32
}
{
type: "string";
kind?: "ascii" | "utf8" | "utf16"; // default: "ascii"
size?: 8 | 16; // default: 8
}
{
type: "object";
item: TypeWithKey[];
size?: 8 | 16; // default: 8
}
{
type: "array";
item: Type | TypeName;
size?: 8 | 16; // default: 8
}
{
type: "array";
items: (Type | TypeName)[];
}
{
type: "enum";
items: string[];
}
{
assert?: (v: unknown) => asserts v is unknown;
}