File: substitutionTypeNoMergeOfAssignableType.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (52 lines) | stat: -rw-r--r-- 1,452 bytes parent folder | download | duplicates (4)
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
=== tests/cases/compiler/substitutionTypeNoMergeOfAssignableType.ts ===
interface Entry {
    comment?: string;
>comment : string
 }
 
 interface Entity {
     fields: {[key: string]: Entry};
>fields : { [key: string]: Entry; }
>key : string
 }
 
 type Fields<E extends Entity> = {
>Fields : Fields<E>

     [P in keyof E["fields"]]: E["fields"][P]
 };
 
 type Nodes<T = any> = {
>Nodes : Nodes<T>

     [P in keyof T]: T[P] extends Entity
         ? Fields<T[P]>
         : T[P]
 };
 
 function makeEntityStore<T extends Record<string, Entity>>(config: T): Nodes<T> {
>makeEntityStore : <T extends Record<string, Entity>>(config: T) => Nodes<T>
>config : T

     return {} as Nodes<T>
>{} as Nodes<T> : Nodes<T>
>{} : {}
 }
 
 const myTest = makeEntityStore({ test: { fields: { id: {} } } });
>myTest : Nodes<{ test: { fields: { id: {}; }; }; }>
>makeEntityStore({ test: { fields: { id: {} } } }) : Nodes<{ test: { fields: { id: {}; }; }; }>
>makeEntityStore : <T extends Record<string, Entity>>(config: T) => Nodes<T>
>{ test: { fields: { id: {} } } } : { test: { fields: { id: {}; }; }; }
>test : { fields: { id: {}; }; }
>{ fields: { id: {} } } : { fields: { id: {}; }; }
>fields : { id: {}; }
>{ id: {} } : { id: {}; }
>id : {}
>{} : {}

 myTest.test
>myTest.test : Fields<{ fields: { id: {}; }; }>
>myTest : Nodes<{ test: { fields: { id: {}; }; }; }>
>test : Fields<{ fields: { id: {}; }; }>