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

TypeScript中AWSLambda.APIGatewayProxyHandler函数仅1个入参为何调用要3个

问题原因

这个问题完全由AWSLambda.APIGatewayProxyHandler类型定义导致,和返回值类型Promise<AWSLambda.APIGatewayProxyResult>没有关联。

TypeScript中变量的标注类型优先级高于函数字面量的参数声明:APIGatewayProxyHandler类型本身的定义就规定了函数需要接收3个入参,依次是API网关触发的事件对象、Lambda运行上下文对象、回调函数。你在写函数实现时只声明了1个arg参数,只是因为业务逻辑不需要用到后两个参数就做了省略,但TS的类型校验还是会以你标注的Handler类型为准,所以调用时会要求传入3个符合类型的参数。

单元测试解决方案

你可以根据自己的使用场景选以下任意一种处理方式:

  • 如果你不需要用到后两个参数,调用时传入符合类型的占位值即可,示例代码如下:
import type { Context, APIGatewayProxyCallback } from 'aws-lambda';

// 构造测试入参
const mockEvent = {}; // 替换为你自己的测试入参
const mockContext = {} as Context;
const mockCallback = (() => {}) as APIGatewayProxyCallback;

// 调用函数
const result = await func(mockEvent, mockContext, mockCallback);
  • 如果你不想每次测试都传入无用占位参数,可以把业务逻辑从Handler函数中抽离出来,单独导出供测试调用,外层只保留符合Handler类型的包装函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:48:03