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

如何根据传入参数获取函数返回值?如何获取复制数组元素的类型?

咱们一个个来解决你的问题哈:

问题1:根据传入参数获取函数的响应结果

你的clone函数目前有个小疏漏——它没有使用传入的参数,反而直接引用了全局的inputArray!这就导致不管你传什么数组进去,返回的都是同一个全局数组的副本。要让函数根据传入参数返回对应结果,只需要把函数里的inputArray替换成接收的参数就行:

let inputArray = [ { test: 1, }, { test: 2, }, ];

// 修正后的clone函数:使用传入的array参数
function clone(array: any[]): any[] {
  return Array.from(array); // 这里改成传入的array参数
}

// 调用时传入参数,就能拿到对应参数的响应结果了
let outputArray = clone(inputArray);

这样调用clone(inputArray)时,函数就会基于你传入的参数生成副本并返回,你通过outputArray就能获取到这个响应结果啦。

问题2:获取复制后数组元素的类型

分两种场景来处理,分别对应运行时获取类型值和TypeScript类型层面获取元素类型:

运行时获取元素类型

如果你想在代码运行阶段知道元素的类型,直接用typeof操作符就可以:

// 获取整个元素的类型(这里会输出"object")
console.log(typeof outputArray[0]);

// 获取元素内部具体属性的类型(这里会输出"number")
console.log(typeof outputArray[0].test);

如果是自定义类的实例,还可以用instanceof做更精确的判断,但你的例子里是普通对象,typeof就足够用了。

TypeScript类型层面获取元素类型

如果你想在TypeScript的类型系统里拿到元素的类型(比如用来定义变量类型),可以结合typeof和索引访问来实现:

// 先获取inputArray的类型
type InputArrayType = typeof inputArray;
// 通过number索引拿到数组元素的类型
type ArrayElementType = InputArrayType[number];

// 现在ArrayElementType就是 { test: number; } 这个类型了
let newElement: ArrayElementType = { test: 3 }; // 完全符合类型检查

另外,你还可以给clone函数加上泛型,让它的返回类型自动推导,这样outputArray的元素类型会更精确,不用写死any[]:

// 泛型版本的clone函数,返回类型自动匹配传入数组的元素类型
function clone<T>(array: T[]): T[] {
  return Array.from(array);
}

let outputArray = clone(inputArray);
// 此时outputArray的类型是 { test: number; }[],元素类型被自动推导出来

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:08:43