Skip to content

Commit d02f89d

Browse files
Fixed array of union type - added parentheses
1 parent d3c8a93 commit d02f89d

File tree

2 files changed

+18
-1
lines changed
  • typescript-generator-core/src

2 files changed

+18
-1
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/TsType.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,11 @@ public BasicArrayType(TsType elementType) {
119119

120120
@Override
121121
public String format(Settings settings) {
122-
return elementType.format(settings) + "[]";
122+
// https://github.com/Microsoft/TypeScript/pull/914
123+
// TypeScript Specification A.1
124+
return elementType instanceof UnionType
125+
? "(" + elementType.format(settings) + ")" + "[]"
126+
: elementType.format(settings) + "[]";
123127
}
124128

125129
}

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/TsTypeTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package cz.habarta.typescript.generator;
22

3+
import static cz.habarta.typescript.generator.TsType.*;
34
import cz.habarta.typescript.generator.compiler.Symbol;
5+
import java.util.Arrays;
46
import static org.junit.Assert.*;
57

68
import org.junit.*;
@@ -21,4 +23,15 @@ public void testNotEquals() {
2123
public void testNotEqualsNull() {
2224
assertNotEquals(new TsType.ReferenceType(new Symbol("Foo")), null);
2325
}
26+
27+
@Test
28+
public void testTypeParentheses() {
29+
final Settings settings = TestUtils.settings();
30+
assertEquals("string | number", new UnionType(Arrays.asList(String, Number)).format(settings));
31+
assertEquals("string | number[]", new UnionType(Arrays.asList(String, new BasicArrayType(Number))).format(settings));
32+
assertEquals("(string | number)[]", new BasicArrayType(new UnionType(Arrays.asList(String, Number))).format(settings));
33+
assertEquals("(string | number)[][]", new BasicArrayType(new BasicArrayType(new UnionType(Arrays.asList(String, Number)))).format(settings));
34+
assertEquals("{ [index: string]: string | number }", new IndexedArrayType(String, new UnionType(Arrays.asList(String, Number))).format(settings));
35+
}
36+
2437
}

0 commit comments

Comments
 (0)