never类型
TypeScript 将使用 never 类型来表示不应该存在的状态
// 返回never的函数必须存在无法达到的终点
// 因为必定抛出异常,所以 error 将不会有返回值
function error(message: string): never {
throw new Error(message)
}
// 因为存在死循环,所以 loop 将不会有返回值
function loop(): never {
while (true) {
}
}
never 与 void 的差异
//void类型只是没有返回值 但本身不会出错
function Void(): void {
console.log()
}
//只会抛出异常没有返回值
function Never(): never {
throw new Error('error')
}
当我们鼠标移上去的时候会发现 只有void和number never在联合类型中会被直接移除
type A = void | number | never
never 类型的一个应用场景
type A = 'mk' | 'mankeung' | 'mkimq'
function IsMy(value: A) {
switch (value) {
case 'mk':
break
case 'mankeung':
break
case 'mkimq':
break
default:
// 是用于场景兜底逻辑
const error: never = value
return error
}
}