Mapper函数返回类型不兼容问题:基于ElementName联合类型的工厂函数类型适配咨询
Mapper函数返回类型不兼容问题:基于ElementName联合类型的工厂函数类型适配咨询
各位好,我最近在TypeScript类型定义上碰到了个棘手的问题,想请大伙帮忙支支招:
我定义了一个联合类型ElementName,里面包含「基础字段」和「复杂字段」两类枚举值,先放两个基础字段的示例代码:
type ElementName = | 'basicField1' | 'basicField2'
接下来我要写一个工厂/映射器函数,它接收elementName作为参数,从对应的映射配置里返回对应数据。这里的核心矛盾点在于:
- 针对基础字段,映射器里对应的处理函数签名是固定死的:
(element: any) => string | null | undefined - 但如果是复杂类型字段,对应的处理函数签名就没有限制,可以是任何符合业务需求的类型
现在我给这个工厂函数定义类型的时候,总是触发返回类型不兼容的报错,完全摸不准该怎么设计类型,才能让TypeScript准确推断不同字段对应的返回类型,同时还能保证类型安全?
备注:内容来源于stack exchange,提问作者Maksym
相关产品推荐
相关产品推荐

