1//// [nestedTypeVariableInfersLiteral.ts] 2// https://github.com/Microsoft/TypeScript/issues/19632 3declare function direct<A extends string>(a: A | A[]): Record<A, string> 4declare function nested<A extends string>(a: { fields: A }): Record<A, string> 5declare function nestedUnion<A extends string>(a: { fields: A | A[] }): Record<A, string> 6 7const directUnionSingle = direct("z") 8const directUnionArray = direct(["z", "y"]) 9const nestedSingle = nested({fields: "z"}) 10const nestedUnionSingle = nestedUnion({fields: "z"}) 11const nestedUnionArray = nestedUnion({fields: ["z", "y"]}) 12 13declare function hasZField(arg: { z: string }): void 14 15hasZField(directUnionSingle) // ok 16hasZField(directUnionArray) // ok 17hasZField(nestedSingle) // ok 18hasZField(nestedUnionSingle) // ok 19hasZField(nestedUnionArray) // ok 20 21 22//// [nestedTypeVariableInfersLiteral.js] 23var directUnionSingle = direct("z"); 24var directUnionArray = direct(["z", "y"]); 25var nestedSingle = nested({ fields: "z" }); 26var nestedUnionSingle = nestedUnion({ fields: "z" }); 27var nestedUnionArray = nestedUnion({ fields: ["z", "y"] }); 28hasZField(directUnionSingle); // ok 29hasZField(directUnionArray); // ok 30hasZField(nestedSingle); // ok 31hasZField(nestedUnionSingle); // ok 32hasZField(nestedUnionArray); // ok 33