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

如何从TypeScript数组类型中移除指定索引元素?以Parameters类型为例

从数组类型中移除首个元素实现柯里化

你可以通过TypeScript的条件类型+类型推断来实现从Parameters数组类型中移除索引0的元素,具体可定义一个Tail工具类型提取数组中除首个元素外的剩余部分。

解决方案代码

function NEW_PERSON(name: string, age: number, weight: number, height: number) {
  // 函数逻辑
}

// 工具类型:移除数组类型的首个元素
type Tail<T extends any[]> = T extends [infer _, ...infer Rest] ? Rest : never;

function CURRIED_NEW_PERSON(name: string) {
  // 使用Tail获取NEW_PERSON参数中除第一个name外的剩余类型
  return function (...args: Tail<Parameters<typeof NEW_PERSON>>) {
    return NEW_PERSON(name, ...args); // 参数数量匹配,无类型错误
  };
}

逻辑说明

  • Tail<T>通过条件类型推断,将输入数组T拆分为首个元素(用infer _捕获,下划线表示无需使用该值)和剩余元素数组Rest,最终返回Rest类型。
  • Parameters<typeof NEW_PERSON>会提取NEW_PERSON的参数类型数组[string, number, number, number],经过Tail处理后得到[number, number, number],正好匹配柯里化后需要传入的age、weight、height参数类型。

调用验证

这样调用柯里化后的函数,类型检查完全正常:

const createPerson = CURRIED_NEW_PERSON("Alice");
createPerson(25, 60, 170); // 类型正确,无报错

内容的提问来源于stack exchange,提问作者A. L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:20:20