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

泛型对象解构剩余属性后无法匹配原泛型类型的问题咨询

泛型对象解构剩余属性后无法匹配原泛型类型的问题咨询

各位大佬好,想请教一个TypeScript的问题~我先把场景简化说下,实际需求是提取对象里的可选参数,要么把它从返回结果里排除,要么用另一个值覆盖它。

先给大家看固定类型下的代码,这段是完全能正常工作的:

type Structure = {
  a: string
  b: number
  z: boolean
}

const test = (input: Structure): Structure => {
  const { a, ...rest } = input
  return {
    ...rest,
    a: 'sss',
  }
}

但当我换成泛型写法的时候就踩坑了,目前的泛型代码是这样的:

export const test = <T extends { a: string; b: number }>(input: T): T => {
  const { a, ...rest } = input
  return {
    ...rest,
    a: 'sss',
  }
}

这里的问题在于,解构出剩余属性rest之后,重新组合a返回时,TypeScript没办法识别这个返回值和原泛型T是匹配的,直接抛出了类型不兼容的错误。有没有大佬能帮忙看看怎么解决这个问题呀?

备注:内容来源于stack exchange,提问作者skyboyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:13:10