返回 Skill 列表
extension
分类: 开发与工程无需 API Key

nuxt-enums

使用可转换接口的TypeScript枚举模式,用于模型集成。在创建具有行为方法(如颜色、标签)的枚举、定义固定值集或将枚举与模型转换系统集成时使用。

person作者: jakexiaohubgithub

Nuxt Enums

Class-based enums with behavior methods and model casting integration.

Core Concepts

enums.md - Complete enum patterns, behavior methods, UI integration

Basic Enum

// app/enums/PostStatus.ts
import Enum from '#layers/base/app/enums/Enum'
import type { Castable } from '#layers/base/app/types'

export default class PostStatus extends Enum implements Castable {
  // Static enum values
  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')

  // Cast method for model system
  static cast(value: string): PostStatus {
    return PostStatus.coerce(value)
  }

  // Behavior methods
  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
  }
}

Usage

// In models (auto-cast from API string)
status: PostStatus

// Comparisons
post.status.is(PostStatus.Published)

// Get all values
PostStatus.values()

// In templates
<UBadge :color="post.status.color()">{{ post.status.text }}</UBadge>