function serializeUnpackedUnionType()

in build-scripts/doc-gen/parser.ts [502:528]


function serializeUnpackedUnionType(
    checker: ts.TypeChecker, node: ts.TypeAliasDeclaration): string {
  const typeStringComponents = [];

  if (ts.isUnionTypeNode(node.type)) {
    const unionTypeMembers = node.type.types;
    unionTypeMembers.forEach((typeNode) => {
      const memberType = checker.getTypeFromTypeNode(typeNode);
      const properties = memberType.getProperties();
      if (properties.length === 0) {
        typeStringComponents.push(typeNode.getText());
      } else {
        const subTypeComponents = [];
        properties.forEach(property => {
          const propName = property.getName();
          const propType = util.parameterTypeToString(checker, property, {});
          subTypeComponents.push(`${propName}: ${propType}`)
        });
        const subTypeString = `{${subTypeComponents.join(', ')}}`
        typeStringComponents.push(subTypeString)
      }
    });
    return typeStringComponents.join('|');
  } else {
    return node.type.getText();
  }
}