首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Middy,回调类型

Middy,回调类型
EN

Stack Overflow用户
提问于 2020-11-12 02:24:29
回答 1查看 893关注 0票数 0

我试图在Lambda调用中使用TyepScript witn Middy。我的代码之一是:

代码语言:javascript
复制
// 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);

我试着用:

代码语言:javascript
复制
import { Callback } from 'aws-lambda'
// then...
callback: Callback

但是我在middy(myFunction)上得到了这个错误

代码语言:javascript
复制
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'.

我应该在callback参数myFunction中使用哪种类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-12 03:43:11

问题是第二个参数应该是其签名中的Context类型,而不是回调。

由于需要上下文,所以只需将contextcallback分别设置为第2、第3参数,如下所示:

代码语言:javascript
复制
import { Context, Callback } from 'aws-lambda';


async function myFunction (
  event: { body: BodyRequestType },
  context: Context,
  callback: Callback 
) {
  // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64797012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档