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类型才能执行到这,表示没有任何值能走到这一行。
}
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白803 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端