emit
Fire one of the node's inbuilt typed bindings — EventType.Click/Focus/ Blur/Change map to onClick/onFocus/onBlur/onChange. No-op when the node didn't bind that event. (Pass a EventType.Custom here and it is routed to the emit string overload.)
payload is runtime data the static binding can't carry. It reaches the handler as EventPayload.payload, alongside — never merged into — the binding's static EventPayload.params.
Fire an event by name. The event name is always the node's exact binding prop name — never rewritten. The four reserved prop names — "onclick"/"onfocus"/"onblur"/ "onchange" — fire the node's typed bindings, exactly like the EventType overload (serialization stores those props in typed fields). Any other name is a custom event, resolved from the node's props by that same name — emit("rate") looks up node.props["rate"]. No-op when no matching binding is present. payload reaches the handler as EventPayload.payload, alongside — never merged into — the binding's static EventPayload.params.