chenshuai2144 / openapi2typescript

一个被大范围使用的小工具
312 stars 136 forks source link

feat: #55 enumStyle support #57

Closed scrapstation closed 2 years ago

scrapstation commented 2 years ago

枚举样式支持

// config
enumStyle?: 'string-literal' | 'enum'
// typings.d.ts eg.

// string-literal style
type StatusEnum = 'Active' | 'InActive'

// enum style
enum StatusEnum { 
  Active = 'Active',
  InActive = 'InActive'
}

我识别到的 enum style 优势和使用场景: 1、支持将enum.value作为对象的Key,用于table column

{
  title: '类型',
  dataIndex: nameof<ISearchCouponResponse>((x) => x.type),
  valueType: 'select',
  valueEnum: {
    [CouponTypeEnumOfCoupon.Discount]: { text: '折扣券' },
    [CouponTypeEnumOfCoupon.FullReduction]: { text: '满减券' },
    [CouponTypeEnumOfCoupon.Shipping]: { text: '运费券' },
  },
},

2、用于下拉选择的options的类型辅助,如果是string-literal,无法及时发现枚举值变更(除非声明一个中间变量)

<ProFormRadio.Group
  name="type"
  label="优惠券类型"
  initialValue={CouponTypeEnumOfCoupon.FullReduction}
  options={[
    { value: CouponTypeEnumOfCoupon.FullReduction, label: '满减券' },
    { value: CouponTypeEnumOfCoupon.Discount, label: '折扣券' },
  ]}
/>

3、随机值,enum可以实现随机获取一个值,string-literal无法随机获取 (目前我用在调试各种状态的页面表现)

chenshuai2144 commented 2 years ago

好了通知我,我帮你发一下,

我个人不喜欢 enum这个语法, 因为他既是 type 也是 js

scrapstation commented 2 years ago

好了