Thanks, I looked into that but it seems to be heavily discouraged. It works pretty well, except that you can’t e.g. add fields to types, so unless you want to manage any state whatsoever, you probably want to use composition anyway - as you rightly point out.
The other approach would possibly be functors, but I think given that rescript isn’t oo, i’d probably want to throw the is-a thinking out the window anyway.