YMFE / yapi

YApi 是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台
http://yapi.smart-xwork.cn/
Apache License 2.0
27.34k stars 4.78k forks source link

Feature Request: ADT(Algebraic Data Type) View #2716

Open ScarboroughCoral opened 1 year ago

ScarboroughCoral commented 1 year ago

版本号

什么问题

当某个字段类型为对象,并且这些对象可以分类的时候,希望可以按照ADT的形式展示某个对象字段。 伪代码大概像这样,yapi视图上提供一个类似对象类型切换tab的能力:

type Message = TextMessage | ImageMessage | RichTextMessage
type TextMessage = {
 type: MessageEnum.Text
 id: string
 text: string
}
type ImageMessage = {
 type: MessageEnum.Image
 id: string
 url: string
 mimeType: MimeType
}
type RichTextMessage = {
 type: MessageEnum.RichText
 id: string
 richText: string
}

按照目前的yapi展示表达应该类似于这样

type Message = {
 id: string
 type: MessageEnum
 url: string | null // 当type为MessageEnum.Image 时是合法值
 text: string | null // 当type为MessageEnum.Text 时是合法值
 mimeType: string | null // 当type为MessageEnum.RichText 时是合法值
 richText: string | null // 当type为MessageEnum.RichText 时是合法值
}

当对象分类比较多,字段比较多的时候依赖于人为备注增加和人为过滤字段合法值,这样会增加使用者心智负担和阅读难度,也会增加使用错误的概率。 如果可以提供一个代数数据类型的视图可以很好的划分并且满足数据逻辑关系。

如何复现此问题

什么浏览器

什么系统(Linux, Windows, macOS)