Closed
Description
lambda-tester is broken by #51152.
Conditional type instantiation seems to proceed differently for an alias when it was constructed without type parameters that are later defaulted:
type Actual = lambdaTester.Verifier<lambdaTester.HandlerResult<Handler>>
type Expected = lambdaTester.Verifier<lambdaTester.HandlerResult<Handler<any, any>>>
// from lambda-tester's index.d.ts:
type HandlerResult<T extends Handler> = T extends Handler<any, infer TResult> ? TResult : never;
type Verifier<S> = S extends HandlerError<Handler>
? (S extends string ? VerifierFn<string>
: S extends Error ? VerifierFn<Error>
: never)
: VerifierFn<S>;
class LambdaTester<T extends Handler> {
// ....
expectSucceed(verifier: Verifier<HandlerResult<T>>): Promise<any>;
// ....
}
// from aws-lambda's index.d.ts:
export type Handler<TEvent = any, TResult = any> = (
event: TEvent,
context: Context,
callback: Callback<TResult>,
) => void | Promise<TResult>;
Actual
and Expected
are both VerifierFn<string> | VerifierFn<Error> | VerifierFn<any>
before #51152. Afterwards, Actual
is VerifierFn<unknown>
.