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

泛型实现属性类型批量转换时,动态使用旧接口类型报错的问题咨询

泛型实现属性类型批量转换时,动态使用旧接口类型报错的问题咨询

我最近在写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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:43:04