Verniz found a value that would cross between Zolo and browser TypeScript but
does not have one deterministic JSON representation. The bridge never replaces
that value with TypeScript any.
The first Wire slice accepts nil, booleans, strings, numbers, arrays, tuples,
string-keyed maps, anonymous records, optional values, unions, and concrete
structs or tagged enums decorated with @wire. Action parameters must have
explicit types. Functions, closures, handles, ResourceFs, inferred fields,
non-string map keys, and unmarked user types stay on their origin side.
@wire
struct SaveInput {
title: str,
tags: [str],
}
@action
fn save(input: SaveInput) -> Result<nil, str> {
// ...
}For dates, bytes, decimals, or big integers, keep the value server-side or add
an explicit codec once that codec surface is available. Do not widen the type
to Any: doing so would remove the guarantee the diagnostic protects.
See also: TE764 and the Verniz Sites bridge specification.