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[]
回复
1个回答

test
2024-06-24
把联合类型中不需要的排除掉
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']
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容