我试图定义一些类型,说必须以两种方式之一使用回调,要么它必须是一个错误,在这种情况下它不应该有结果,或者它必须是一个结果,在这种情况下它必须没有错误。
因此,这里的示例是我试图使用它的方法:
import { LambdaCallback } from "./types";
export function handler(event:any, context:any, callback:LambdaCallback) {
console.log(event)
callback(null, {
statusCode: 200,
body: JSON.stringify({msg: "Hello, World!!"})
})
}
这是我对类型的尝试:
export type LambdaCallbackError = string | {};
export type LambdaCallResult = {
statusCode: number,
body: string
}
export type LambdaCallbackWithError = (error:LambdaCallbackError) => void;
export type LambdaCallbackWithResult = (error:null, result:LambdaCallResult) => void;
export type LambdaCallback = LambdaCallbackWithError | LambdaCallbackWithResult;
类型编译正常,但在尝试使用它时会出现以下错误:
lambda / hello.ts(6,5):错误TS2349:无法调用其表达式 type缺少呼叫签名。输入' LambdaCallback'没有兼容性 呼叫签名。
有什么想法吗?
答案 0 :(得分:4)
您的代码LambdaCallbackWithError | LambdaCallbackWithResult
这是错误的。您没有单个功能,可以一个。您有一个单功能,这两个。
你应该:
export type LambdaCallback = (error:null | LambdaCallbackError, result:LambdaCallResult) => void;