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类型才能执行到这,表示没有任何值能走到这一行。
}
相关推荐
light blue bird10 小时前
主子端台二分法任务汇总组件
前端·数据库·.net·桌面端winform
rleS IONS11 小时前
SpringBoot中自定义Starter
java·spring boot·后端
DevilSeagull11 小时前
MySQL(2) 客户端工具和建库
开发语言·数据库·后端·mysql·服务
jeffwang11 小时前
我做了个让 AI 看屏幕跑测试的工具,因为 Playwright 测不了我的 Flutter Web
前端
HSunR12 小时前
dify 搭建ai作业批改流
开发语言·前端·javascript
代码不加糖12 小时前
2026 跨境电商独立站实战:从 0 到 1 搭建高转化 SaaS 商城(附源码)
开发语言·前端·javascript
TeDi TIVE12 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
雨辰AI12 小时前
SpringBoot3 + 人大金仓 V9 微服务监控实战|Prometheus+Grafana+SkyWalking 全链路监控
数据库·后端·微服务·grafana·prometheus·skywalking
亲亲小宝宝鸭12 小时前
拖一拖控件,拖出个问卷(低代码平台)
前端·低代码
江南十四行12 小时前
ReAct Agent 基本理论与项目实战(一)
前端·react.js·前端框架