Skip to content
This repository was archived by the owner on Nov 13, 2023. It is now read-only.

Commit 4e6674d

Browse files
committed
Emit array type in a way that satisfies typescript’s linter.
1 parent b718604 commit 4e6674d

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

sample-project/src/Types.re.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ export type typeWithVars<x,y,z> =
1515
export type optionInt = ?number;
1616
export const consumeOption: (?number) => number = function _(Arg1) { const result = TypesBS.consumeOption((Arg1 == null ? undefined : Arg1)); return result };
1717
export const consumeOption2: (optionInt) => number = function _(Arg1) { const result = TypesBS.consumeOption2((Arg1 == null ? undefined : Arg1)); return result };
18-
export const testArray: ((?number)[]) => (?number)[] = function _(Arg1) { const result = TypesBS.testArray(Arg1.map(function _element(x) { return (x == null ? undefined : x)})); return result };
18+
export const testArray: (Array<?number>) => Array<?number> = function _(Arg1) { const result = TypesBS.testArray(Arg1.map(function _element(x) { return (x == null ? undefined : x)})); return result };

src/EmitTyp.re

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,19 @@ let rec renderString = (~language, typ) =>
1212
)
1313
| TypeVar(s) => s
1414
| Option(typ) => "?" ++ (typ |> renderString(~language))
15-
| Array(typ) => "(" ++ (typ |> renderString(~language)) ++ ")" ++ "[]"
15+
| Array(typ) =>
16+
let typIsSimple =
17+
switch (typ) {
18+
| Ident(_)
19+
| TypeVar(_) => true
20+
| _ => false
21+
};
22+
23+
if (language == Typescript && typIsSimple) {
24+
(typ |> renderString(~language)) ++ "[]";
25+
} else {
26+
"Array<" ++ (typ |> renderString(~language)) ++ ">";
27+
};
1628
| Record(recordFields) => recordFields |> renderRecordType(~language)
1729
| Object(fields) => fields |> renderObjType(~language)
1830
| Function({typeVars, argTypes, retType}) =>

0 commit comments

Comments
 (0)