@Type, @Input, and @Interface accept Generic[T]. Each unique parametrization
is synthesized into one concrete GraphQL type at build time and memoized, so the same
parametrization always resolves to the same named type.
UserPage type whose items field is typed [User!]!.
Synthetic names are derived from the parameter (User + Page → UserPage); pass a
name template with a {} placeholder to override the naming scheme. TypeVar
fields are resolved against the concrete parameters at each parametrization site.