1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
=== tests/cases/compiler/objectRestBindingContextualInference.ts ===
// slimmed-down repro from #52629
type ImageHolder<K extends string> = {
>ImageHolder : ImageHolder<K>
[P in K]: string;
};
type SetupImageRefs<K extends string> = {
>SetupImageRefs : SetupImageRefs<K>
[P in K]: File;
};
type SetupImages<K extends string> = SetupImageRefs<K> & {
>SetupImages : SetupImages<K>
prepare: () => { type: K };
>prepare : () => { type: K;}
>type : K
};
interface TestInterface {
name: string;
>name : string
image: string;
>image : string
}
declare function setupImages<R extends ImageHolder<K>, K extends string>(
>setupImages : <R extends ImageHolder<K>, K extends string>(item: R, keys: K[]) => SetupImages<K>
item: R,
>item : R
keys: K[]
>keys : K[]
): SetupImages<K>;
declare const test: TestInterface;
>test : TestInterface
const { prepare, ...rest } = setupImages(test, ["image"]);
>prepare : () => { type: "image"; }
>rest : { image: File; }
>setupImages(test, ["image"]) : SetupImages<"image">
>setupImages : <R extends ImageHolder<K>, K extends string>(item: R, keys: K[]) => SetupImages<K>
>test : TestInterface
>["image"] : "image"[]
>"image" : "image"
|