typescript-void和never

这两天工作有点忙,忘记更新了,不好意思啊!

今天来说两个容易混淆的点。

void和never

这两个用来定义函数的返回值类型。默认情况下,函数是返回的void,即在没有设置返回值的情况下或者返回undefined。

而never表示函数永远不会有返回值

TypeScript 复制代码
// 返回number类型的
function testNum(): number {
    return 10;
}
// 没有返回值
function testVoid1() {
    console.log("没有返回值1");
}
function testVoid2(): void {
    console.log("没有返回值2");
}
// 永远不会有返回值
function testNever1(): never {
    throw new Error("报个错");
}
function testNever2(): never {
    console.log("never返回函数中返回number类型报错");
    return 10;
}

console.log(testNum());
console.log(testVoid1());
console.log(testVoid2());
console.log(testNever1());
console.log(testNever2());

可以看到上面的testNever2会报错,因为这里never表示永远不会有返回值,而我这里返回一个number值10.所以报错了

编译tsc index.ts

在页面中引入编译好的index.js

查看控制台输出

注:个人感觉可以这么想,void表示某个函数会执行完成;而never表示函数中有死循环,即不会执行完成,或者报错了,同样等于不会执行完成

相关推荐
做前端的娜娜子5 小时前
#浏览器存储方案:localStorage、sessionStorage 与 Cookie
前端·面试·掘金·金石计划
用户921080262865 小时前
1. Ant Design X Vue 项目介绍:结构、组件和启动方式
前端
摸鱼研究员5 小时前
neverthrow,ts 中优雅的异常处理方案
前端·javascript
烬羽5 小时前
求第 K 大,为什么反而要用最小堆?
javascript·数据结构·算法
jingchao19985 小时前
Cannot read properties of null (reading ‘insertBefore‘)
前端·javascript·vue.js
计算机魔术师5 小时前
新文章
前端
爱跳舞的烤冷面5 小时前
自学嵌入式第N天(Linux篇——文件编程)
java·开发语言·前端
IT_陈寒5 小时前
Vite的热更新突然失效,原来我忽略了这个配置
前端·人工智能·后端
怪奇云呼军5 小时前
闪电智能VoiceAgent 如何管理呼入、接听、桥接和挂断状态?
java·前端·网络·数据库·人工智能
云浪5 小时前
Milvus + RAG 实战:《红楼梦》问答助手
前端·人工智能·后端