type Flatten<T> = T exnteds Array<infer R> ? R : T;
type GetReturnType<t> = T extends ( ...args: never[]) => infer Return ? Return : never
type ToArray<T> = T extends any ? T[] | never;
// ToArray 의 타입인자로 string | number 을 넣어줌
type StrArrOrNumArr = ToArray<string | number>;
// 결과
type StrArrOrNumArr = string[] | number[]
type ToArrayNonDist<Type> = [Type] extends [any] ? Type[] : never;
// 'StrArrOrNumArr' is no longer a union.
type StrArrOrNumArr = ToArrayNonDist<string | number>;