Skip to content
This repository was archived by the owner on Sep 21, 2019. It is now read-only.

Commit c5ede53

Browse files
committed
werk
1 parent a1de3a0 commit c5ede53

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

src/transforms/collapse-intersection-interfaces-transform.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export function collapseIntersectionInterfacesTransformFactoryFactory(
3737
node.type.types.every(ts.isTypeLiteralNode) &&
3838
node.type.types.every(type => type.forEachChild(node => ts.isPropertySignature(node)) || false)
3939
) {
40-
// debugger
4140
// We need cast `node.type.types` to `ts.NodeArray<ts.TypeLiteralNode>`
4241
// because TypeScript can't figure out `node.type.types.every(ts.isTypeLiteralNode)`
4342
const allIntersectionTypeNodeTypes = node.type.types as ts.NodeArray<ts.TypeLiteralNode>;
@@ -48,20 +47,24 @@ export function collapseIntersectionInterfacesTransformFactoryFactory(
4847
return typeLitteralNode.members as ts.NodeArray<ts.PropertySignature>;
4948
})
5049
.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 })
5352
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;
5654
});
5755

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+
// }
6568

6669
return ts.createTypeAliasDeclaration(
6770
[],

tsconfig.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
"experimentalDecorators": true,
1010
"sourceMap": true,
1111
"outDir": "dist",
12-
"sourceRoot": "../src"
12+
"sourceRoot": "../src",
13+
"lib": ["dom", "es2015"]
1314
},
1415
"exclude": ["node_modules", "test", "dist"],
15-
"types": ["node", "jest"],
16-
"lib": ["es2017"]
16+
"types": ["node", "jest"]
1717
}

0 commit comments

Comments
 (0)