SuperAPI AI 工具集

nuxt-enums

编程与开发

查看项目

更新于 10-16 09:21

技能介绍

用途

nuxt-enums 提供了一套在 Nuxt 项目中使用的基于类的 TypeScript 枚举模式。它通过 Castable 接口与模型系统集成,让枚举值不仅能表示固定取值,还能携带行为方法(如返回颜色、标签文本),从而在业务逻辑和 UI 展示中复用。

主要能力

  • 类枚举定义:通过继承 Enum 基类并实现 Castable 接口,创建具有静态枚举值的类。
  • 行为方法:可在枚举类中定义方法(如 color() 返回颜色标识、get text 返回显示文本),将展示逻辑与枚举值绑定。
  • 模型自动转换:实现静态 cast 方法后,模型中的枚举字段可从 API 返回的字符串自动转换为枚举实例。
  • 比较与遍历:支持使用 .is() 方法比较枚举值,以及通过 .values() 获取所有枚举值。
  • 模板集成:在模板中可直接调用枚举实例的方法和属性,例如用于 UI 组件的颜色和文本。

使用方式

  1. 在 app/enums/ 目录下创建枚举文件,例如 PostStatus.ts。
  2. 导入 Enum 基类和 Castable 类型:
    import Enum from '#layers/base/app/enums/Enum'
    import type { Castable } from '#layers/base/app/types'
    
  3. 定义类并继承 Enum,实现 Castable:
    export default class PostStatus extends Enum implements Castable {
      static readonly Draft = PostStatus.create('draft')
      static readonly PendingReview = PostStatus.create('pending review')
      static readonly Published = PostStatus.create('published')
      static readonly Archived = PostStatus.create('archived')
    
      static cast(value: string): PostStatus {
        return PostStatus.coerce(value)
      }
    
      color(): string {
        switch (this.value) {
          case 'draft': return 'neutral'
          case 'pending review': return 'warning'
          case 'published': return 'success'
          case 'archived': return 'error'
          default: return 'neutral'
        }
      }
    
      get text(): string {
        return this.value
      }
    }
    
  4. 在模型中使用枚举类型,API 字符串会自动转换:
    status: PostStatus
    
  5. 进行比较或获取所有值:
    post.status.is(PostStatus.Published)
    PostStatus.values()
    
  6. 在模板中使用:
    <UBadge :color="post.status.color()">{{ post.status.text }}</UBadge>
    

适用场景

  • Nuxt 应用中需要管理状态、类型等固定取值集合。
  • 希望为枚举值附加展示逻辑(如颜色、标签),避免在组件中散落 switch 语句。
  • 需要从后端 API 接收字符串并自动转换为具有行为的枚举实例。
  • 使用 UBadge 等 UI 组件时,直接利用枚举方法提供颜色和文本。

限制

  • 资料未提供安装命令、依赖要求或版本兼容性信息。
  • 资料未说明是否支持除 Nuxt 外的其他框架。
  • 资料未提及收费、价格或平台限制。
  • 资料未提供完整的 API 文档或所有可用方法列表。