You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript字面量函数void返回类型疑问及文档准确性困惑

TypeScript中void返回类型函数的报错疑问解答

首先看TypeScript文档「函数的可赋值性」章节的描述(翻译自官方英文文档):

当字面量函数的返回类型被定义为void时,该函数不应返回任何值。

但你给出的两个函数都会报错,这是因为文档的表述场景和你写的代码场景并不一致,并非文档存在错误:

你的代码场景:直接定义返回void的函数

无论是函数声明还是函数表达式赋值,只要显式指定返回类型为void,却返回了true这类非undefined的值,TypeScript都会触发类型错误——这是基础的类型校验规则,和是否是字面量函数无关:

// 函数声明:显式返回void却返回true,报错
function f2(): void {
  return true;
}
// 函数表达式赋值:显式返回void却返回true,报错
const f3 = function (): void {
  return true;
};

文档实际讨论的场景:函数的赋值兼容性

文档里说的「字面量函数返回void」的例外情况,指的是将有返回值的函数赋值给类型为() => void的变量/参数的场景,比如:

// 有返回值的函数
const fnWithReturn = () => true;
// 赋值给类型为() => void的变量,不会报错
const fnVoid: () => void = fnWithReturn;

这种情况下,TypeScript允许赋值,因为当一个函数被当作void返回类型使用时,它的返回值会被忽略,这才是文档描述的核心场景。

简单来说:直接定义返回void的函数必须遵守返回值规则,而把有返回值的函数赋值给void类型的函数变量时,才会触发文档里提到的兼容性规则。

内容的提问来源于stack exchange,提问作者DoHan_Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:35:03