Remix.run Logo
sedatk an hour ago

Obviously, because it was a fictional, simplified example for the post. My real use case was more complicated and involved multiple developers working on different parts of that flow.

The problem with if-else chains is it's easy for a programmer to forget to handle a case that another developer added in the called component. Unit tests can't help a spec miscommunication. But, visitor pattern can as it forces the handling logic to be complete.

Hence my example at the end using discriminated unions and exhaustive pattern matching in F#. Much, much simpler with the same benefits.