UNPKG

ts-json-schema-generator

Version:

Generate JSON schema from your Typescript sources

31 lines (25 loc) 1.02 kB
import ts from "typescript"; import { Context, NodeParser } from "../NodeParser"; import { SubNodeParser } from "../SubNodeParser"; import { UnionType } from "../Type/UnionType"; import { BaseType } from "../Type/BaseType"; import { notUndefined } from "../Utils/notUndefined"; export class UnionNodeParser implements SubNodeParser { public constructor(private typeChecker: ts.TypeChecker, private childNodeParser: NodeParser) {} public supportsNode(node: ts.UnionTypeNode): boolean { return node.kind === ts.SyntaxKind.UnionType; } public createType(node: ts.UnionTypeNode, context: Context): BaseType | undefined { const types = node.types .map((subnode) => { return this.childNodeParser.createType(subnode, context); }) .filter(notUndefined); if (types.length === 1) { return types[0]; } else if (types.length === 0) { return undefined; } return new UnionType(types); } }