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();
}
}