Middy with TypeScript,回调类型
Middy with TypeScript, callback type
我正在尝试在 Lambda API 调用中使用 TyepScript witn 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);
我尝试使用:
import { Callback } from 'aws-lambda'
// then...
callback: Callback
但我在 middy(myFunction)
上收到此错误:
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'.
我应该在 myFunction 的 callback
参数上使用什么类型?
问题是第二个参数应该是 Context
输入它的签名而不是回调。
由于需要上下文,所以您只需将 context
和 callback
分别设置为第二个和第三个参数,如下所示:
import { Context, Callback } from 'aws-lambda';
async function myFunction (
event: { body: BodyRequestType },
context: Context,
callback: Callback
) {
// ...
}
我正在尝试在 Lambda API 调用中使用 TyepScript witn 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);
我尝试使用:
import { Callback } from 'aws-lambda'
// then...
callback: Callback
但我在 middy(myFunction)
上收到此错误:
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'.
我应该在 myFunction 的 callback
参数上使用什么类型?
问题是第二个参数应该是 Context
输入它的签名而不是回调。
由于需要上下文,所以您只需将 context
和 callback
分别设置为第二个和第三个参数,如下所示:
import { Context, Callback } from 'aws-lambda';
async function myFunction (
event: { body: BodyRequestType },
context: Context,
callback: Callback
) {
// ...
}