ts 如何正确断言?

EChartsOption.tooltip?: TooltipOption | TooltipOption[] | undefined

type formatter = EChartsOption['tooltip']['formatter'];
报错:`类型“TooltipOption | TooltipOption[] | undefined”上不存在属性“formatter”。`

type formatter1 = EChartsOption['tooltip'][number]['formatter']; 
报错:`类型“TooltipOption | TooltipOption[] | undefined”没有匹配的类型“number”的索引签名。`

如何正确断言呢?

EChartsOption['tooltip']  断言为  TooltipOption
EChartsOption['tooltip']  断言为  TooltipOption[] 
阅读 789
3 个回答

把联合类型中不需要的排除掉

type inferArrayItem<T> =
  T extends (infer U)[] ? U :
  T extends readonly (infer U)[] ? U :
  T;

type ExcludeUndefined<T> = T extends undefined ? never : T;

type formatter = inferArrayItem<ExcludeUndefined<EChartsOption['tooltip']>>['formatter']
type formatter = (EChartsOption['tooltip'] & {})['formatter'];

echarts 的文字提示选项类类型是export的,你可以直接用:

import { TooltipComponentOption } from 'echarts'

type Formater = TooltipComponentOption['formatter']
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏