Skip to content

Commit 86c2349

Browse files
committed
Add Array<T> and ReadonlyArray<T> support.
1 parent bc5628f commit 86c2349

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

src/NodeParser/TypeReferenceNodeParser.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as ts from "typescript";
22
import { NodeParser, Context } from "../NodeParser";
33
import { SubNodeParser } from "../SubNodeParser";
44
import { BaseType } from "../Type/BaseType";
5+
import { ArrayType } from "../Type/ArrayType";
56

67
export class TypeReferenceNodeParser implements SubNodeParser {
78
public constructor(
@@ -23,6 +24,8 @@ export class TypeReferenceNodeParser implements SubNodeParser {
2324
);
2425
} else if (typeSymbol.flags & ts.SymbolFlags.TypeParameter) {
2526
return context.getArgument(typeSymbol.name);
27+
} else if (typeSymbol.name === "Array" || typeSymbol.name === "ReadonlyArray") {
28+
return new ArrayType(this.createSubContext(node, context).getArguments()[0]);
2629
} else {
2730
return this.childNodeParser.createType(
2831
typeSymbol.declarations[0],

test/valid-data.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ describe("valid-data", () => {
9292
assertSchema("type-intersection", "MyObject");
9393

9494
assertSchema("generic-simple", "MyObject");
95+
assertSchema("generic-arrays", "MyObject");
9596
assertSchema("generic-multiple", "MyObject");
9697
assertSchema("generic-multiargs", "MyObject");
9798
assertSchema("generic-anonymous", "MyObject");
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface MyObject {
2+
numberArray: Array<number>;
3+
stringArray: ReadonlyArray<string>;
4+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyObject": {
5+
"type": "object",
6+
"properties": {
7+
"numberArray": {
8+
"type": "array",
9+
"items": {
10+
"type": "number"
11+
}
12+
},
13+
"stringArray": {
14+
"type": "array",
15+
"items": {
16+
"type": "string"
17+
}
18+
}
19+
},
20+
"required": [
21+
"numberArray",
22+
"stringArray"
23+
],
24+
"additionalProperties": false
25+
}
26+
},
27+
"$ref": "#/definitions/MyObject"
28+
}

0 commit comments

Comments
 (0)