Typescript 带类型脚本的Middy,回调类型
我试图在lambdaapi调用中使用TyepScript witnTypescript 带类型脚本的Middy,回调类型,typescript,middy,Typescript,Middy,我试图在lambdaapi调用中使用TyepScript witnMiddy。 我的部分代码: // My types definition import BodyRequestType from 'types'; // some code async function myFunction ( event: { body: BodyRequestType }, callback: ??? <-- ): Promise<void> { // my code
Middy
。
我的部分代码:
// My types definition
import BodyRequestType from 'types';
// some code
async function myFunction (
event: { body: BodyRequestType },
callback: ??? <--
): Promise<void> {
// my code
return callback(null, {
statusCode: 200,
body: JSON.stringify(data)
});
}
export const handler = middy(myFunction);
但是我在middy(myFunction)
上得到了这个错误:
TS2345:类型为“(事件:{body:BodyRequestType;},回调:回调)=>Promise”的参数不可分配给
类型为“AsyncHandler”的参数。
Type'(事件:{body:BodyRequestType;},回调:回调)=>Promise'
不可分配给类型“(事件:任意,上下文:上下文,回调:回调)=>void”。
参数“回调”和“上下文”的类型不兼容。
类型“Context”不可分配给类型“Callback”。
类型“Context”未提供签名的匹配项“(错误?:字符串|错误| null |未定义,结果?:any):void”。
我应该在myFunction的
回调
参数上使用什么类型?问题是第二个参数在其签名中应该是上下文
类型,而不是回调
由于上下文是必需的,所以您只需将上下文
和回调
分别设置为第二个和第三个参数,如下所示:
从“aws lambda”导入{Context,Callback};
异步函数myFunction(
事件:{body:BodyRequestType},
上下文:上下文,
回调:回调
) {
// ...
}
我30分钟前就放弃了,把any
放在其他事情上,然后我读到这些论点的顺序很重要。。。还有类型,谢谢你!有一个技巧是直接在包中读取类型定义,这将对您有很大帮助
import { Callback } from 'aws-lambda'
// then...
callback: Callback
TS2345: Argument of type '(event: { body: BodyRequestType; }, callback: Callback<any>) => Promise<void>' is not assignable to
parameter of type 'AsyncHandler<Context>'.
Type '(event: { body: BodyRequestType; }, callback: Callback<any>) => Promise<void>'
is not assignable to type '(event: any, context: Context, callback: Callback<any>) => void'.
Types of parameters 'callback'and 'context' are incompatible.
Type 'Context' is not assignable to type 'Callback<any>'.
Type 'Context' provides no match for the signature '(error?: string | Error | null | undefined, result?: any): void'.