It’s actually quite safe provided you follow the documentation and model the mutation in a type-safe way:
- The (Reason built-in)
ref(something) type tells you that there is mutation going on
option(something) type tells you that something may or may not be there, so you need to check for both cases
The safety comes from modelling even side-effectful code using the correct types, and restricting mutation to as small a scope as possible. These are fundamental techniques in FP. Admittedly, Elm promises a bit more safety by restricting what you can do, but there’s always a tradeoff.
Right, so normally I’d say to use the bs-webapi bindings, but looks like there’s none for
audio … yet. I’d recommend writing a
play binding yourself against an abstract
audioElement type and just casting the ref’s value (
audioElement to legally be able to call the binding.