// https://github.com/Microsoft/TypeScript/issues/19632 declare function direct(a: A | A[]): Record declare function nested(a: { fields: A }): Record declare function nestedUnion(a: { fields: A | A[] }): Record const directUnionSingle = direct("z") const directUnionArray = direct(["z", "y"]) const nestedSingle = nested({fields: "z"}) const nestedUnionSingle = nestedUnion({fields: "z"}) const nestedUnionArray = nestedUnion({fields: ["z", "y"]}) declare function hasZField(arg: { z: string }): void hasZField(directUnionSingle) // ok hasZField(directUnionArray) // ok hasZField(nestedSingle) // ok hasZField(nestedUnionSingle) // ok hasZField(nestedUnionArray) // ok