Isn't that overkill? You can check exhaustiveness with a trivial little helper:
function exhaustive(witness: never): never {
return witness
}
https://www.typescriptlang.org/play/?#code/FAFwngDgpgBAKgZQB...