$ElementType
$ElementType
@example
// Expect: string;
type Props = { name: string; age: number; visible: boolean };
type NameType = $ElementType<Props, 'name'>;
// Expect: boolean
type Tuple = [boolean, number];
type A = $ElementType<Tuple, '0'>;
// Expect: number
type B = $ElementType<Tuple, '1'>;
// Expect: boolean
type Arr = boolean[];
type ItemsType = $ElementType<Arr, number>;
// Expect: number
type Obj = { [key: string]: number };
type ValuesType = $ElementType<Obj, string>;
type $ElementType<T extends [P in K & any]: any, K extends keyof T | number> = T[K];