import { UnionToIntersection } from './utils' ; export interface Vector < T > { readonly [ x ] : T ; readonly length : number ; } export type Length < T extends Vector < any > > = T [ 'length' ] ; param T returns export type UnionizeTuple < T extends Vector < any > > = T [ number ] ; param T returns export type IntersectTuple < T extends Vector < any > > = UnionToIntersection < T [ number ] > ;