视频位置 TypeScript快速梳理_上篇 44:05
never 不是用来限制变量的,而是用来限制函数的返回类型。
never 的含义是:任何值都不是,即:不能存任何值。
例如 undefined 、 nul l 、 ‘’ 、 0 都不⾏!
1. ⼏乎不⽤ never 去直接 限制 变量,因为没有意义
例如:
/* 指定a的类型为never,那就意味着a以后不能存任何的数据了 */
let a: never
//测试:
// 以下对a的所有赋值都会 有警告
a = 1
a = true
a = undefined
a = null2. never 也可⽤于 限制 函数的 返回值
//如果返回值限制为 never, 那么只有两种情况:
// 1.不能顺利的调用结束。 因为只要顺利结束,就会返回undefined。
// 2.进入该函数后,永远调不完( while() 或 递归 )。
function demo():never{
//如果不写返回值 也有警告。 因为默认返回 undefined 。
//可适用于抛出错误,并终止当前线程运行:
throw new Error('程序运行异常')
}3. never ⼀般是 TypeScript 主动推断 出来的
// 指定a的类型为string
let a: string
// 给a设置⼀个值
a = 'hello'
a = 9 //此行会被警告。 ts会自动推断,如果a不是字符串就不让给。 并不是我们想着此处a=9就会执行下面的else。
if (typeof a === 'string') {
console.log(a.toUpperCase())
} else {
console.log(a) //ts 会推断出此处的 a是never,因为没有任何⼀个值符合此处的∈ts的自动推断逻辑
}
