내장 제네릭 Parameters<T>를 이를 사용하지 않고 구현하세요.
const foo = (arg1: string, arg2: number): void => {}
type FunctionParamsType = MyParameters<typeof foo> // [arg1: string, arg2: number]
함수 타입을 받아서 타입을 추론할 것입니다.
type MyParameters<T extends (...args: any[]) => any> = T extends (...args: infer Param) => any ? {[p in keyof Param]: Param[p]} : never;
만약 함수 타입이 맞다면 파라미터를 반환합니다.. 아니라면 never를 반환합니다.