-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueRecent RegressionThis is a new regression just found in the last major/minor version of TypeScript.This is a new regression just found in the last major/minor version of TypeScript.
Milestone
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>.
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueRecent RegressionThis is a new regression just found in the last major/minor version of TypeScript.This is a new regression just found in the last major/minor version of TypeScript.