泛型对象解构剩余属性后无法匹配原泛型类型的问题咨询
泛型对象解构剩余属性后无法匹配原泛型类型的问题咨询
各位大佬好,想请教一个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
相关产品推荐
相关产品推荐

