• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// https://github.com/Microsoft/TypeScript/issues/19632
2declare function direct<A extends string>(a: A | A[]): Record<A, string>
3declare function nested<A extends string>(a: { fields: A }): Record<A, string>
4declare function nestedUnion<A extends string>(a: { fields: A | A[] }): Record<A, string>
5
6const directUnionSingle = direct("z")
7const directUnionArray = direct(["z", "y"])
8const nestedSingle = nested({fields: "z"})
9const nestedUnionSingle = nestedUnion({fields: "z"})
10const nestedUnionArray = nestedUnion({fields: ["z", "y"]})
11
12declare function hasZField(arg: { z: string }): void
13
14hasZField(directUnionSingle) // ok
15hasZField(directUnionArray) // ok
16hasZField(nestedSingle) // ok
17hasZField(nestedUnionSingle) // ok
18hasZField(nestedUnionArray) // ok
19