定义
never 的含义是:任何值都不是,不能有值
任何值都不行
,例如undefined、null、'' 、0都不⾏!
- 几乎
不用
never去限制变量
,因为是没有意义的 - never可以在
函数
中限制不能有返回值
(不写return(显式返回值)也不行,js函数默认返回undefined(隐式返回值)),返回"从不"的函数不能具有可访问的终结点
ts
let str: never
str = 'hello' // 抱错:不能将类型""hello""分配给类型"never"
function demo1(): never{} // 抱错:返回"从不"的函数不能具有可访问的终结点。(因为js函数默认返回undefined)
function demo2(): never{return: 0} // 抱错:返回"从不"的函数不能具有可访问的终结点
使用never限制函数不能有返回值的两种情况
- never就是限制函数
永远不能
正常运行结束
- 死循环
- 抛出错误
ts
// 【死循环】
function fun1(): never{
fun1()
}
// 【抛出错误】
function fun2(): never{
throw new Error('err')
}
never⼀般是ts主动推断出来的
ts
let str: string
str = 'hello'
if(typeof str === 'string'){
console.log(str.toUpperCase())
}
else{
console.log(str) // 提示:let str: never。只有str是never类型才能执行到这,表示没有任何值能走到这一行。
}