args,...args与Parameters<T>

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]
相关推荐
Wang's Blog7 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
LucianaiB8 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
apcipot_rain8 小时前
C++转Java日记(03)
java·开发语言·c++
excel8 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
布莱克6058 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
xys_6789 小时前
深挖C++:类和对象(中)
开发语言·c++
灿飞屋9 小时前
Rust 编程其实很简单
开发语言·rust
陈随易10 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
MOONICK11 小时前
QT元数据
开发语言·qt
D e re k ZH11 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法