When to use `never` and `unknown` in TypeScript