{}; const bar = (arg1: boolean, arg2: { a: "A" }): void => {}; const baz = (): void => {}; type cases = [ Expect, [string, number]>>, Expect, [boolean, { a: "A" }]>>, Expect, []>> ]; // ============= Your Code Here ============= type MyParameters any> = T extends ( ...args: infer R ) => void ? R : never;"> {}; const bar = (arg1: boolean, arg2: { a: "A" }): void => {}; const baz = (): void => {}; type cases = [ Expect, [string, number]>>, Expect, [boolean, { a: "A" }]>>, Expect, []>> ]; // ============= Your Code Here ============= type MyParameters any> = T extends ( ...args: infer R ) => void ? R : never;"> {}; const bar = (arg1: boolean, arg2: { a: "A" }): void => {}; const baz = (): void => {}; type cases = [ Expect, [string, number]>>, Expect, [boolean, { a: "A" }]>>, Expect, []>> ]; // ============= Your Code Here ============= type MyParameters any> = T extends ( ...args: infer R ) => void ? R : never;">
// ============= Test Cases =============
import type { Equal, Expect } from "./test-utils";

const foo = (arg1: string, arg2: number): void => {};
const bar = (arg1: boolean, arg2: { a: "A" }): void => {};
const baz = (): void => {};

type cases = [
  Expect<Equal<MyParameters<typeof foo>, [string, number]>>,
  Expect<Equal<MyParameters<typeof bar>, [boolean, { a: "A" }]>>,
  Expect<Equal<MyParameters<typeof baz>, []>>
];

// ============= Your Code Here =============
type MyParameters<T extends (...args: any[]) => any> = T extends (
  ...args: infer R
) => void
  ? R
  : never;
// usage
首先需要了解 Parameters 是怎么用的
1. type fn1 = (a: string, b: number) => void;
type fn1Params = Parameters<fn1>
// [string, number]

2. type fn1 = (a: string, ...args: any[]) => void;
type fn1Params = Parameters<fn1>
// [string, ...any[]]

如何实现?
1. 描述函数基本形状
2. 提取参数子类型