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

如何获取全局Array对象函数类型?如何用Array.find类型定义findObj的pred参数?

关于获取Array方法类型的问题解答

1. 如何获取全局Array对象函数的类型?

想要获取Array原型上方法的类型,你不能直接用typeof Array<U>.find这种写法——因为Array<U>是类型,不是具体的值,没法通过.去访问它的方法。正确的思路是从Array.prototype这个值上取方法的类型,或者从Array<T>的实例类型中提取对应方法的类型:

  • 如果是不带泛型的通用类型,可以直接写:typeof Array.prototype.find
  • 如果要绑定到具体的数组元素类型T,可以用索引访问类型:Array<T>['find']

2. 在StackBlitz场景下,如何获取Array.find的类型来定义findObj的pred参数?

你之前的写法type XYZ<U> = typeof Array<U>.find是行不通的,因为Array<U>是类型而非值。咱们调整一下,直接从Array<T>的实例类型中提取find方法的类型即可,代码示例如下:

// 正确提取Array.find的类型,绑定到泛型T
type XYZ<T> = Array<T>['find'];

const findObj = function<T>(obj: T[], pred: XYZ<T>): T | undefined {
  // 现在pred的类型完全匹配Array.find的参数要求
  return obj.find(pred);
};

这里补充个小细节:Array.find本身的返回值是T | undefined(当找不到匹配项时会返回undefined),所以建议把findObj的返回类型也改成T | undefined,这样类型更严谨。当然如果你的业务逻辑能保证一定能找到,也可以用非空断言return obj.find(pred)!,但要注意潜在的运行时风险。

内容的提问来源于stack exchange,提问作者Andre Elrico

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:42:39