* Reduce void | undefined only in conjunction with subtype reduction * Accept new baselines * Add regression test
38 lines
798 B
Plaintext
38 lines
798 B
Plaintext
=== tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts ===
|
|
// Repro from #42404
|
|
|
|
interface Y {
|
|
foo<T>(this: T, arg: keyof T): void;
|
|
>foo : <T>(this: T, arg: keyof T) => void
|
|
>this : T
|
|
>arg : keyof T
|
|
|
|
a: number;
|
|
>a : number
|
|
|
|
b: string;
|
|
>b : string
|
|
}
|
|
|
|
declare const value: Y | undefined;
|
|
>value : Y | undefined
|
|
|
|
if (value) {
|
|
>value : Y | undefined
|
|
|
|
value?.foo("a");
|
|
>value?.foo("a") : void
|
|
>value?.foo : <T>(this: T, arg: keyof T) => void
|
|
>value : Y
|
|
>foo : <T>(this: T, arg: keyof T) => void
|
|
>"a" : "a"
|
|
}
|
|
|
|
value?.foo("a");
|
|
>value?.foo("a") : void | undefined
|
|
>value?.foo : (<T>(this: T, arg: keyof T) => void) | undefined
|
|
>value : Y | undefined
|
|
>foo : (<T>(this: T, arg: keyof T) => void) | undefined
|
|
>"a" : "a"
|
|
|