Note: the default T = any is intentional. Callers pass narrower
function types like (value: number) => void; with T = unknown,
function-parameter contravariance would reject those at the call
site. The looser default keeps the GUI builder ergonomic while
concrete usages still get type-checked through the controller's
declared T.
Change callback signature.
Note: the default
T = anyis intentional. Callers pass narrower function types like(value: number) => void; withT = unknown, function-parameter contravariance would reject those at the call site. The looser default keeps the GUI builder ergonomic while concrete usages still get type-checked through the controller's declaredT.