Abstract Really funny constructor here, but it's just to allow omission of the reference parameter in the case that it's marked as null (normally this would be a function overload).
In other words, if the ref can be null, you can omit the second argument and a ref will be created for you with null as the default value.
Private #valueState value, not actually reactive
Readonly refRef object
Update the value and trigger updateDOM.
Protected Abstract updateDOMGenerated using TypeDoc
Convenient container class to hold a reference object and value to allow for easy (but manual) state management. Just implement the update function by taking advantage of the ref object.
Example
Tic-tac-toe example
Remark
this pattern will get very messy if things are too complicated.