Skip to content

Commit 64370c2

Browse files
author
k.golikov
committed
JSON-To-TypeScript: fix bugs
1 parent 7d16337 commit 64370c2

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

src/pages/jsonToTypeScriptPage/utils/getAllTypeScriptTypeDeclarations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const renameConflictingType = (
88
): void => {
99
const match = /^(.*?)(\d+)$/.exec(type.name);
1010
if (!match) {
11-
type.name += '1';
11+
type.name += '2';
1212
} else {
1313
const [, left, numericPart] = match;
1414
const numeric = Number(numericPart);

src/pages/jsonToTypeScriptPage/utils/getTypeScriptUnion.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { TypeScriptType, TypeScriptUnion, TypeScriptUnknown } from '../types/typescript';
2+
import { remove } from 'lodash';
23

34
const getTypeScriptUnion = (name: string, types: TypeScriptType[]): TypeScriptType => {
45
if (types.length === 0) {
@@ -8,6 +9,7 @@ const getTypeScriptUnion = (name: string, types: TypeScriptType[]): TypeScriptTy
89
return types[0];
910
}
1011

12+
remove(types, (type) => type instanceof TypeScriptUnknown);
1113
return new TypeScriptUnion(name, types);
1214
};
1315

src/pages/jsonToTypeScriptPage/utils/mergeTypeScriptTypes.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import { chain, isString } from 'lodash';
2-
import { TypeScriptInterface, TypeScriptObjectField, TypeScriptType, TypeScriptUnion } from '../types/typescript';
2+
import {
3+
TypeScriptArray,
4+
TypeScriptInterface,
5+
TypeScriptObjectField,
6+
TypeScriptType,
7+
TypeScriptUnion
8+
} from '../types/typescript';
39
import mergeTypeScriptTypesList from './mergeTypeScriptTypesList';
10+
import getTypeScriptUnion from './getTypeScriptUnion';
411

512
const mergeTypeScriptTypes = (a: TypeScriptType, b: TypeScriptType): TypeScriptType[] => {
613
const singleType = [a];
@@ -63,6 +70,11 @@ const mergeTypeScriptTypes = (a: TypeScriptType, b: TypeScriptType): TypeScriptT
6370
return [new TypeScriptInterface(a.name, mergedFields)];
6471
}
6572

73+
if (a instanceof TypeScriptArray && b instanceof TypeScriptArray) {
74+
const mergedTypes = mergeTypeScriptTypes(a.type, b.type);
75+
return [new TypeScriptArray(getTypeScriptUnion('', mergedTypes))];
76+
}
77+
6678
if (a instanceof TypeScriptUnion || b instanceof TypeScriptUnion) {
6779
const aTypes = a instanceof TypeScriptUnion ? a.types : [a];
6880
const bTypes = b instanceof TypeScriptUnion ? b.types : [b];

0 commit comments

Comments
 (0)