TypeScript的新类型(三):never

定义

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就是限制函数 永远不能 正常运行结束
  1. 死循环
  2. 抛出错误
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类型才能执行到这,表示没有任何值能走到这一行。
}
相关推荐
小岛前端14 小时前
🔥Vue3 移动端组件精选!满足各种场景!
前端·vue.js·微信小程序
用户15105810474314 小时前
带leading和trailing的防抖和节流
前端
IT小哥哥呀14 小时前
论文见解:REACT:在语言模型中协同推理和行动
前端·人工智能·react.js·语言模型
ChinaRainbowSea14 小时前
11. Spring AI + ELT
java·人工智能·后端·spring·ai编程
不会写DN14 小时前
用户头像文件存储功能是如何实现的?
java·linux·后端·golang·node.js·github
一枚前端小能手14 小时前
🚫 请求取消还在用flag?AbortController让你的异步操作更优雅
前端·javascript
code_YuJun14 小时前
前端脚手架开发流程
前端
golang学习记14 小时前
从0死磕全栈之使用 VS Code 调试 Next.js 应用完整指南
前端
盖世英雄酱5813614 小时前
FullGC排查,居然是它!
java·后端
Mintopia14 小时前
🧩 隐私计算技术在 Web AIGC 数据处理中的应用实践
前端·javascript·aigc