ts中联合类型赋值报错怎么解决?

export type SourceTemplate = ColunmTemplate | PercentTemplate | SeriesTemplate | HourTemplate | SliderLineTemplate;

useSymptoms.data.chartData的类型为SourceTemplate[]

image.png
定义了变量useSymptoms.data.chartData为联合类型,用于接收请求回来的数据,然后需要把useSymptoms.data.chartData这个变量传给不同的子组件 子组件接收数据的类型为联合类型里面的一种 请问这种情况应该怎么解决 ~

阅读 2.3k
2 个回答

需要加个枚举类型 然后通过枚举类型判断后就可以推导出类型

enum TYPE_ENUM{
    CREATE,
    UPDATE
}
type ICreate = {
    type:TYPE_ENUM.CREATE;
    data: string;
};
type IUpdate = {
    type:TYPE_ENUM.UPDATE;
    data: number;
};
type Prop = IUpdate|ICreate;
if(data.type === TYPE_ENUM.UPDATE) {
...这里能推导出data是number
}

如果类型是确定的,可以使用 as 强制转换一下

比如:

useSymptoms.data.chartData as ColunmTemplate[]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题