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

TypeScript疑问:已声明返回void为何仍报函数必须返回值错误

问题分析与解决

你犯了一个类型标注的错误:CommandHandler是一个函数类型,它描述的是「接收CommandValues参数、返回void或Promise<void>的函数」,但你把handler的返回类型标注成了CommandHandler,这相当于要求handler执行后要返回另一个符合CommandHandler类型的函数——可你的函数体里只是执行了console.log,根本没返回任何函数,所以编译器才会报错。

正确的写法有两种:

写法一:直接指定handler的类型为CommandHandler

export const handler: CommandHandler = (values: CommandValues) => {
  console.log(`hello ${values.name}`);
};

写法二:直接标注函数的返回值类型(对应CommandHandler的返回值约束)

export const handler = (values: CommandValues): void | Promise<void> => {
  console.log(`hello ${values.name}`);
};

如果确实需要handler返回一个CommandHandler类型的函数(这应该不是你的需求)

那函数体里必须返回符合该类型的函数,比如:

export const handler = (values: CommandValues): CommandHandler => {
  // 返回一个符合CommandHandler类型的函数
  return (innerValues) => {
    console.log(`hello ${innerValues.name}`);
  };
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:52:03