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

TypeScript中如何使用带key的for...in?JSX转TSX类型报错如何解决?

问题的核心是TypeScript的静态类型校验触发了类型不匹配,JavaScript本身不做类型校验,所以JSX中可以正常运行。你定义的IParams接口中started_at和ended_at为Date类型,如果你实际给这两个字段赋值的是字符串格式的日期(比如接口返回的ISO日期字符串、表单输入的日期字符串、时间戳字符串),就会出现类型错误。

解决方案可根据你的实际业务场景选择:

  • 如果业务中这两个字段需要存储为Date对象,赋值时将字符串转为Date类型即可:
// 示例:原错误写法
const params: IParams = {
  user_id: "xxx",
  first: 10,
  started_at: "2024-01-01",
  ended_at: "2024-01-31"
}

// 修正后写法
const params: IParams = {
  user_id: "xxx",
  first: 10,
  started_at: new Date("2024-01-01"),
  ended_at: new Date("2024-01-31")
}

如果是时间戳,直接把时间戳作为参数传入new Date()即可完成转换。

  • 如果业务中这两个字段本身就是以字符串形式使用(比如直接传给后端接口、渲染到页面),直接调整接口的类型定义即可:
interface IParams {
  user_id: string;
  first: number;
  started_at: string;
  ended_at: string;
}
  • 如果两个字段可能是Date类型也可能是字符串类型,可以用联合类型兼容两种场景:
interface IParams {
  user_id: string;
  first: number;
  started_at: Date | string;
  ended_at: Date | string;
}

注:如果是通过请求库发送参数给后端,Date对象在序列化时会自动转为ISO标准日期字符串,和直接传字符串的效果一致,不需要额外处理。

内容的提问来源于stack exchange,提问作者nvh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:45:03