网站搜索

vue.js - typescript 如何从另一个参数的类型推断一个参数的类型


type ChartType = 'bar' | 'line' | 'pie';


interface PropsType {
  type: EChartType;
  xData: **** ;
  seriesData: ****  ;
}
const props = defineProps<PropsType>();


如何做

当 ChartType='bar' 时,xData 的类型是 string[],seriesData 的类型是 number[]。当 ChartType='line' 时,xData 的类型是 Array<string|number>,seriesData 的类型是 string[]。当 ChartType='pie' 时,xData 的类型是 number[],seriesData 的类型是 {value:string,name:string}[]。

答案#1

这是你问题的答案。

type TPropsType = {
        type: "bar"
        xData: string[]
        seriesData: number[]
    } | {
        type: "line"
        xData: Array<string|number>
        seriesData: string[]
    } | {
        type: 'pie'
        xData: number[]
        seriesData: {value:string,name:string}[]
    }