Skip to content

Parameters

题目

实现内置的 Parameters<T> 类型,而不是直接使用它,可参考TypeScript 官方文档

例如:

ts
const foo = (arg1: string, arg2: number): void => {};

type FunctionParamsType = MyParameters<typeof foo>; // [arg1: string, arg2: number]

解答

使用 infer 表示待推断的类型变量。

由于 ...args 本身已经是元组类型,因此 infer P 最终推导出的,也是元组类型。

ts
type MyParameters<T extends (...args: any[]) => any> = T extends (
  ...args: infer P
) => unknown
  ? P
  : never

Released under the MIT License.