高级前端ts【Q694】在 ts 中什么是 infer,并实现 Parameters 与 ReturnType

在 ts 中什么是 infer,并实现 Parameters 与 ReturnType

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 715

Author 回答者: heretic-G

type Parameters<T extends (...args: any[]) => unknown> = T extends (
  ...args: infer R
) => unknown
  ? R
  : never;

Author 回答者: zhimazz

Parameters 是啥

Author 回答者: Asarua

Parameters 是啥

取得某个函数的参数类型的高级类型

Author 回答者: iceycc

Parameters 的作用是用于获得函数的参数类型组成的元组类型。

type Parameters<T extends (...args: any) => any> = T extends (
  ...args: infer P
) => any
  ? P
  : never;
type A = Parameters<() => void>; // []
type B = Parameters<typeof Array.isArray>; // [any]
type C = Parameters<typeof parseInt>; // [string, (number | undefined)?]
type D = Parameters<typeof Math.max>; // number[]