Earlier quoted context omitted.
the type `null | true | false` is different from `true | false`, a type checker can assert that you handle the `null` case before using a function that wants a boolean. This is how rust handles it (with the Option type).
That doesn’t make sense. `null | false | true` is not equivalent to `Option ` or `Option `. Just like `zero | one | two` is not equivalent to `Option `. Assuming that `true | false` is equivalent to something like `enum { true, false }`.
Isn't it ? both cases represent a type than can express 3 variants