1、...args
...args含义是:
从调用方传进来的那一串逗号分隔的参数里,把落在这个位置上的参数收集进变量 args。
定义时写 ...args,类型是数组 ------ 因为收进来之后它就是数组
2、(...args: never[]) => void
never[]这里的含义是:
never= 不可能存在的类型(没有任何值能赋给它)never[]= 一个元素类型为 never 的数组- 这里表示该函数不能接收任何参数
<T extends (...args: never[]) => void>
T extends (...args: never[]) => void 是 TypeScript 里常见的泛型写法,
右侧只是给 T 定一个「必须是函数、且返回值可赋给 void」的上界
目的是让传入的具体 fn 被推断出完整签名,从而 Parameters<T> 能拿到真实参数元组。。
这里意思是:T 必须是「任意参数个数、返回 void(或可赋给 void)」的函数类型。
3、Parameters<T> 描述函数的参数的 ts 类型,这里T是个函数
Parameters<T> 只和函数类型 T 有关,和变量名 args 无关。
举例:
tsx
const fn = (name: string, age: number) => { ... };
// T 被推断为: (name: string, age: number) => void
// Parameters<T> 为: [string, number]