假设我有一个条件列表,我想处理每个可能的值type
.如果我在将来添加了一个新的type
而我忘记了处理它,我希望出现一个错误—至少是运行时错误,但理想情况下是编译器错误,这样我就可以在部署之前发现我的错误.
如何确定一个变量是类型never
?
type Job = { type: 'add'; payload: any } | { type: 'send'; payload: any }
const handleJob = (job: Job) => {
const add = (job: Job) => {
console.log(job)
}
const send = (job: Job) => {
console.log(job)
}
if (job.type === 'add') {
add(job)
} else if (job.type === 'send') {
send(job)
} else {
// `job` is actually type `never` here,
// this error won't ever be thrown unless additional strings are added to the `Job.type` schema.
throw new Error(`Unhandled job.type "${(job as Job).type}".`)
}
}