6aeb8c12cc
* Create separate types for equivalent aliased unions * Accept new baselines * Preserve original types for union types * Accept new baselines * Preserve intersection origin for union types * Accept new baselines * Accept new baselines * Preserve aliases during relationship checks * Accept new baselines * Preserve aliases for intersection and indexed access types * Accept new baselines * Compute intersection-of-unions cross product without recursion * Accept new baselines * Use denormalized type objects for origin / support 'keyof' origins * Accept new baselines * Fix fourslash test * Recursively extract named union types * Accept new baselines * Map on union origin in mapType to better preserve aliases and origins * Remove redundant call * Accept new baselines * Revert back to declared type when branches produce equivalent union * Accept new baselines * Don't include denormal origin types in regular type statistics * Fix issue with unions not being marked primitive-only * Allow new alias to be associated with type alias instantiation * Accept new baselines * Revert "Accept new baselines" This reverts commit4507270cc1
. * Revert "Allow new alias to be associated with type alias instantiation" This reverts commit2c2d06dfe1
.
46 lines
1.1 KiB
Plaintext
46 lines
1.1 KiB
Plaintext
=== tests/cases/compiler/contextualTypeOfIndexedAccessParameter.ts ===
|
|
type Keys = "a" | "b";
|
|
>Keys : Keys
|
|
|
|
type OptionsForKey = { a: { cb: (p: number) => number } } & { b: {} };
|
|
>OptionsForKey : OptionsForKey
|
|
>a : { cb: (p: number) => number; }
|
|
>cb : (p: number) => number
|
|
>p : number
|
|
>b : {}
|
|
|
|
declare function f<K extends Keys>(key: K, options: OptionsForKey[K]): void;
|
|
>f : <K extends Keys>(key: K, options: OptionsForKey[K]) => void
|
|
>key : K
|
|
>options : OptionsForKey[K]
|
|
|
|
f("a", {
|
|
>f("a", { cb: p => p,}) : void
|
|
>f : <K extends Keys>(key: K, options: OptionsForKey[K]) => void
|
|
>"a" : "a"
|
|
>{ cb: p => p,} : { cb: (p: number) => number; }
|
|
|
|
cb: p => p,
|
|
>cb : (p: number) => number
|
|
>p => p : (p: number) => number
|
|
>p : number
|
|
>p : number
|
|
|
|
});
|
|
|
|
function g<
|
|
>g : <K extends "a" | "b">(x: ({ a: string;} & { b: string;})[K], y: string) => void
|
|
|
|
K extends "a" | "b">(x: ({ a: string } & { b: string })[K], y: string) {
|
|
>x : ({ a: string; } & { b: string; })[K]
|
|
>a : string
|
|
>b : string
|
|
>y : string
|
|
|
|
x = y;
|
|
>x = y : string
|
|
>x : ({ a: string; } & { b: string; })[K]
|
|
>y : string
|
|
}
|
|
|