You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:09:11