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类型才能执行到这,表示没有任何值能走到这一行。
}
相关推荐
程序员阿鹏2 分钟前
SpringBoot自动装配原理
java·开发语言·spring boot·后端·spring·tomcat·maven
程序员爱钓鱼3 分钟前
Node.js 编程实战:CSV&JSON &Excel 数据处理
前端·后端·node.js
徐同保6 分钟前
n8n+GPT-4o一次解析多张图片
开发语言·前端·javascript
老华带你飞9 分钟前
工会管理|基于springboot 工会管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
DanyHope13 分钟前
LeetCode 128. 最长连续序列:O (n) 时间的哈希集合 + 剪枝解法全解析
前端·leetcode·哈希算法·剪枝
Echo flower17 分钟前
Spring Boot WebFlux 实现流式数据传输与断点续传
java·spring boot·后端
GISer_Jing18 分钟前
AI赋能前端:从核心概念到工程实践的全景学习指南
前端·javascript·aigc
|晴 天|18 分钟前
前端事件循环:宏任务与微任务的深度解析
前端
用户44455436542627 分钟前
Android开发中的封装思路指导
前端
AAA_bo129 分钟前
liunx安装canda、python、nodejs、git,随后部署私有网页内容提取工具--JinaReader全攻略
linux·python·ubuntu·typescript·aigc·python3.11·jina