TypeScript如何获取Element.scrollBy等重载方法的完整Parameters类型
原因说明
TypeScript 内置的 Parameters 工具类存在设计限制:处理重载函数时,只会推导最后一个重载签名的参数类型,因此你只能拿到 [x: number, y: number] 这组参数类型。
解决方案
方案1:提取所有重载的参数类型(联合类型)
可以自定义一个重载参数提取工具类,支持提取最多4个重载的参数类型,一般场景足够使用:
type OverloadParameters<T> = T extends { (...args: infer P1): any; (...args: infer P2): any; (...args: infer P3): any; (...args: infer P4): any; } ? P1 | P2 | P3 | P4 : T extends (...args: infer P) => any ? P : never; // 使用示例 type ScrollToAllParams = OverloadParameters<Element["scrollTo"]>; // 得到的类型为:[options?: ScrollToOptions] | [x: number, y: number]
方案2:单独提取带options的参数类型
如果你只需要获取ScrollToOptions相关的参数类型,可以直接通过条件类型匹配对应签名:
// 直接提取options参数的类型 type ScrollToOptionsParam = Element["scrollTo"] extends (options?: infer O) => void ? O : never; // 得到的类型为:ScrollToOptions | undefined
内容的提问来源于stack exchange,提问作者mayang
相关产品推荐
相关产品推荐

