File: substitutionTypeNoMergeOfAssignableType.js

package info (click to toggle)
node-typescript 5.0.4%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 459,116 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (33 lines) | stat: -rw-r--r-- 742 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
//// [substitutionTypeNoMergeOfAssignableType.ts]
interface Entry {
    comment?: string;
 }
 
 interface Entity {
     fields: {[key: string]: Entry};
 }
 
 type Fields<E extends Entity> = {
     [P in keyof E["fields"]]: E["fields"][P]
 };
 
 type Nodes<T = any> = {
     [P in keyof T]: T[P] extends Entity
         ? Fields<T[P]>
         : T[P]
 };
 
 function makeEntityStore<T extends Record<string, Entity>>(config: T): Nodes<T> {
     return {} as Nodes<T>
 }
 
 const myTest = makeEntityStore({ test: { fields: { id: {} } } });
 myTest.test
 

//// [substitutionTypeNoMergeOfAssignableType.js]
function makeEntityStore(config) {
    return {};
}
var myTest = makeEntityStore({ test: { fields: { id: {} } } });
myTest.test;