@@ -37,7 +37,6 @@ export function collapseIntersectionInterfacesTransformFactoryFactory(
37
37
node . type . types . every ( ts . isTypeLiteralNode ) &&
38
38
node . type . types . every ( type => type . forEachChild ( node => ts . isPropertySignature ( node ) ) || false )
39
39
) {
40
- // debugger
41
40
// We need cast `node.type.types` to `ts.NodeArray<ts.TypeLiteralNode>`
42
41
// because TypeScript can't figure out `node.type.types.every(ts.isTypeLiteralNode)`
43
42
const allIntersectionTypeNodeTypes = node . type . types as ts . NodeArray < ts . TypeLiteralNode > ;
@@ -48,20 +47,24 @@ export function collapseIntersectionInterfacesTransformFactoryFactory(
48
47
return typeLitteralNode . members as ts . NodeArray < ts . PropertySignature > ;
49
48
} )
50
49
. reduce ( ( result , members ) => [ ...result , ...members ] , [ ] as Array < ts . PropertySignature > ) ;
51
- // debugger
52
- // Dedupe members with exact same name and type ({ foo: string } & { foo: string })
50
+
51
+ // Dedupe members with exact same name and type ({ foo: string } & { foo: string } => { foo: string } )
53
52
const dedupedMembers = _ . uniqBy ( allMembersOfAllIntersectionTypeNode , memeber => {
54
- // debugger
55
- return memeber . name && memeber . name . getText ( ) + memeber . type ;
53
+ return memeber . name && memeber . name . getText ( sourceFile ) + memeber . type ;
56
54
} ) ;
57
55
58
- // const allMembers = (node.type.types as ts.NodeArray<ts.TypeLiteralNode>)
59
- // .map((type) => type.members)
60
- // .reduce((all, members) => ts.createNodeArray(all.concat(members)), ts.createNodeArray([]));
61
-
62
- // const dedupedMembers = _.uniqBy(allMembers, (member)=> {
63
- // return member.getText(sourceFile) + '___' + typeChecker.getTypeFromTypeNode(member.)
64
- // })
56
+ // Dedupe members with same name and different types ({ foo: string } & { foo: number } => { foo: string | number })
57
+ // const membersMap = new Map<string, ts.NodeArray<ts.TypeNode>>();
58
+ // for (const member of dedupedMembers) {
59
+ // if (member.type) {
60
+ // const memberName = member.name.getText();
61
+ // if (membersMap.has(memberName)) {
62
+ // membersMap.set(memberName, ts.createNodeArray(membersMap.get(memberName)!.concat(member.type)));
63
+ // } else {
64
+ // membersMap.set(memberName, ts.createNodeArray([member.type]))
65
+ // }
66
+ // }
67
+ // }
65
68
66
69
return ts . createTypeAliasDeclaration (
67
70
[ ] ,
0 commit comments