TypeScript void 怎么用
写代码时,你有没有遇到过这种情况:明明定义了一个“专门干活不拿结果”的函数,编译器却突然标红提示类型不对?比如写了一个给网页换背景色的函数,本来就只是想让它执行换色操作,不用返回任何内容,结果还得处理返回值的问题——这时候TypeScript里的void类型就能帮上大忙。
先搞懂:`void`到底不是什么类型
很多人刚接触void会把它和number、string这类数据类型搞混,其实它的作用恰恰是“没有类型”,专门用来标注“函数不需要返回任何值”的场景。打个生活化的比方:你点外卖时,商家说“不用给你送回什么额外的东西,只需要把餐品送到就行”,这个“不用额外返回东西”的状态,就对应代码里的void。

举个日常的例子:你家的扫地机器人,任务就是“把地面扫干净”,不需要给你返回“扫了多少面积”的结果——这个机器人的工作逻辑,就适合用void类型来定义。如果硬要给它加一个返回“扫过面积”的功能,反而多此一举,还会让代码变得复杂。
第一种用法:标注“无返回值的函数”
这是void最常用的场景,专门给那些“只执行操作、不返回任何值”的函数做类型约束。比如你写了一个给网站按钮加点击事件的函数,功能只是弹出提示,不需要返回任何内容:
`typescript
// 正确写法:标注返回类型为void
function showTip(): void {
alert("按钮被点击啦!");
}
`
如果不小心写了返回值,TypeScript就会立刻报错,提醒你“这个函数不该返回东西”:
`typescript
// 错误写法:给void类型函数返回了值
function showTip(): void {
return "这是个多余的返回值"; // 编译器会标红提示错误
}
`
就像你让快递小哥“只送快递,不用给你带别的”,结果小哥非要给你带个小礼物,不符合约定的void要求,自然会被纠正。
第二种用法:处理“误把返回值当void”的坑
有时候我们会遇到“函数实际返回了值,但我们想忽略这个返回值”的情况,这时候也需要用到void,避免类型报错。比如你调用第三方工具的函数,它本来返回了一个配置对象,但你只是想用来打印日志,不需要用这个对象:
`typescript
// 假设第三方工具的getConfig返回一个对象,我们只是想打印它
function printConfig() {
const config = getConfig(); // 正常拿到config对象用
console.log(config);
}
// 现在如果我们只是想调用getConfig,不需要存它的返回值,直接写会报错
printConfig() {
getConfig(); // 编译器会提示“你用了一个有返回值的函数,但没处理它”
}
`
这时候用void标注“忽略这个返回值”,就能解决问题:
`typescript
function printConfig() {
void getConfig(); // 明确告诉编译器:我只是调用函数,不管它的返回值
console.log("配置打印完成");
}
`
就像你朋友递了一杯水给你,你接过喝了就行,不用特意说“我收了这个水”,但如果只是让朋友把水放桌上不用接,就用void明确表示“我不处理这个返回值”。
这些情况不要乱用`void`
虽然void很实用,但也不能随便用。比如如果你写的函数本来就需要返回数字、字符串,就别硬标void,不然会导致后续用这个函数的时候拿不到值。就像你点外卖本来要吃米饭,却跟商家说“不用给我送饭”,最后肯定会饿肚子。
还有,void只能用在函数的返回值上,不能用来定义变量。比如你不能写let a: void;,因为变量得有值,而void是“没有值”的状态,这么写完全不符合逻辑——就像你不能说“我要一个没有重量的苹果”,现实里不存在这种东西。
总的来说,void就是TypeScript给“只干活不拿结果”的场景量身定做的类型工具,帮你减少代码里的不必要错误,让逻辑更清晰。只要记住它的核心作用是“标注无返回”,再结合具体的使用场景,就能用得很顺手了。