File: objectRestBindingContextualInference.types

package info (click to toggle)
node-typescript 5.1.6%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 492,516 kB
  • sloc: javascript: 2,078,951; makefile: 6; sh: 1
file content (55 lines) | stat: -rw-r--r-- 1,249 bytes parent folder | download
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"