File: mappedTypeOverlappingStringEnumKeys.types

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (91 lines) | stat: -rw-r--r-- 2,577 bytes parent folder | download | duplicates (2)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
=== tests/cases/conformance/types/mapped/mappedTypeOverlappingStringEnumKeys.ts ===
// #37859

enum TerrestrialAnimalTypes {
>TerrestrialAnimalTypes : TerrestrialAnimalTypes

  CAT = "cat",
>CAT : TerrestrialAnimalTypes.CAT
>"cat" : "cat"

  DOG = "dog"
>DOG : TerrestrialAnimalTypes.DOG
>"dog" : "dog"

};

enum AlienAnimalTypes {
>AlienAnimalTypes : AlienAnimalTypes

  CAT = "cat",
>CAT : AlienAnimalTypes.CAT
>"cat" : "cat"

};

type AnimalTypes = TerrestrialAnimalTypes | AlienAnimalTypes;
>AnimalTypes : TerrestrialAnimalTypes | AlienAnimalTypes

interface TerrestrialCat {
  type: TerrestrialAnimalTypes.CAT;
>type : TerrestrialAnimalTypes.CAT
>TerrestrialAnimalTypes : any

  address: string;
>address : string
}

interface AlienCat {
  type: AlienAnimalTypes.CAT
>type : AlienAnimalTypes
>AlienAnimalTypes : any

  planet: string;
>planet : string
}

type Cats = TerrestrialCat | AlienCat;
>Cats : TerrestrialCat | AlienCat

type CatMap = {
>CatMap : { cat: (TerrestrialCat | AlienCat)[]; dog: never[]; }

  [V in AnimalTypes]: Extract<Cats, { type: V }>[]
>type : V

};

const catMap: CatMap = {
>catMap : CatMap
>{  cat: [    { type: TerrestrialAnimalTypes.CAT, address: "" },    { type: AlienAnimalTypes.CAT, planet: "" }  ],  dog: [] as never[]} : { cat: ({ type: TerrestrialAnimalTypes.CAT; address: string; } | { type: AlienAnimalTypes; planet: string; })[]; dog: never[]; }

  cat: [
>cat : ({ type: TerrestrialAnimalTypes.CAT; address: string; } | { type: AlienAnimalTypes; planet: string; })[]
>[    { type: TerrestrialAnimalTypes.CAT, address: "" },    { type: AlienAnimalTypes.CAT, planet: "" }  ] : ({ type: TerrestrialAnimalTypes.CAT; address: string; } | { type: AlienAnimalTypes; planet: string; })[]

    { type: TerrestrialAnimalTypes.CAT, address: "" },
>{ type: TerrestrialAnimalTypes.CAT, address: "" } : { type: TerrestrialAnimalTypes.CAT; address: string; }
>type : TerrestrialAnimalTypes.CAT
>TerrestrialAnimalTypes.CAT : TerrestrialAnimalTypes.CAT
>TerrestrialAnimalTypes : typeof TerrestrialAnimalTypes
>CAT : TerrestrialAnimalTypes.CAT
>address : string
>"" : ""

    { type: AlienAnimalTypes.CAT, planet: "" }
>{ type: AlienAnimalTypes.CAT, planet: "" } : { type: AlienAnimalTypes; planet: string; }
>type : AlienAnimalTypes
>AlienAnimalTypes.CAT : AlienAnimalTypes
>AlienAnimalTypes : typeof AlienAnimalTypes
>CAT : AlienAnimalTypes
>planet : string
>"" : ""

  ],
  dog: [] as never[]
>dog : never[]
>[] as never[] : never[]
>[] : undefined[]

};