请解释 TypeScript 内置工具类型 Parameters 的功能及其典型使用场景。
考察说明
考查对 TypeScript 内置工具类型 Parameters 的理解,包括其作用、用法和实际应用。
回答思路
- 【回答框架 1】Parameters 是 TypeScript 内置的条件类型工具,用于提取函数类型的参数元组类型。它接受一个函数类型作为类型参数,返回该函数参数的类型元组。
- 【回答框架 2】例如,对于函数类型 (name: string, age: number) => void,Parameters 返回 [name: string, age: number],这是一个元组类型,可用于获取参数类型。
- 【回答框架 3】它的实现基于条件类型:type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never。通过 infer 推断参数类型。
- 【回答框架 4】典型应用场景包括:在封装高阶函数时获取原函数的参数类型,或者在类型编程中动态构造与函数参数相关的类型。
- 【回答框架 5】使用时需要注意,Parameters 只能用于函数类型,如果用在不满足约束的类型上会报错。另外,参数类型可能包含可选参数,会导致元组中的对应元素带有 ? 修饰符。
- 【关键点 1】Parameters 提取函数参数类型并返回元组类型。
- 【关键点 2】基于条件类型和 infer 实现。
- 【关键点 3】常用于高阶函数和类型工具的组合。
- 【易错点 1】不能用于非函数类型,否则类型错误。
- 【易错点 2】可选参数在元组中会标记为可选,处理时需注意。
- 【易错点 3】对重载函数,只取最后一个实现签名。