泛型实现属性类型批量转换时,动态使用旧接口类型报错的问题咨询
泛型实现属性类型批量转换时,动态使用旧接口类型报错的问题咨询
我最近在写TypeScript的时候碰到个头疼的问题,想做一个通用泛型,用来把对象里指定类型的属性批量转换成另一种类型。目前的情况是,如果我直接创建一个完全符合转换后类型的新对象,代码跑起来没问题,但要是试着用原来的接口类型对象来做动态转换,就会触发类型错误,实在搞不清问题出在哪。
下面是我的代码示例:
export type ConvertTypes<B, F, T> = { [K in keyof B]: B[K] extends F ? T : B[K] } export type ConvertStringToDate<T> = ConvertTypes<T, string, Date> interface ITest { aa: number; bb: string; cc: Date; } // 这种直接创建符合转换后类型的新对象是正常工作的 const validObj: ConvertStringToDate<ITest> = { aa: 123, bb: new Date(), cc: new Date() } // 但尝试用旧接口类型的对象做转换就会报错 const testObj: ITest = { aa: 123, bb: "2024-01-01", cc: new Date() } // 这里会提示类型不兼容的错误 const convertedObj: ConvertStringToDate<ITest> = testObj;
备注:内容来源于stack exchange,提问作者Ibrahim.Sluma
相关产品推荐
相关产品推荐

