Vue+TypeScript 枚舉(Enum)的使用規范

在 TypeScript 中,枚舉(Enum)的命名應遵循以下規范,這些規范結合了 TypeScript 官方建議和行業最佳實踐:

枚舉命名規范(TypeScript/Vue 項目)

  1. 基本命名規則

    • 使用?PascalCase(大駝峰式)?命名枚舉類型

    • 枚舉成員使用?UPPER_SNAKE_CASE(全大寫+下劃線)

    • 避免使用復數形式(枚舉表示一組相關常量,不是集合)

typescript

復制

下載

// ? 正確示例
export enum UserStatus {ACTIVE = "ACTIVE",INACTIVE = "INACTIVE",PENDING_VERIFICATION = "PENDING_VERIFICATION"
}export enum HttpStatusCode {OK = 200,BAD_REQUEST = 400,NOT_FOUND = 404
}
  1. 語義化命名原則

    • 使用名詞+狀態/類型的組合

    • 包含明確的上下文信息

    • 避免通用名稱(如?Status,?Type

typescript

復制

下載

// ? 推薦(包含上下文)
export enum OrderPaymentStatus {UNPAID = "UNPAID",PARTIALLY_PAID = "PARTIALLY_PAID",PAID = "PAID",REFUNDED = "REFUNDED"
}// ? 避免(過于通用)
export enum Status {ACTIVE = 1,DISABLED = 0
}
  1. 項目中的最佳實踐

    • 統一前綴(可選):對相關枚舉使用相同前綴

    • 文件組織:將枚舉放在?/src/enums/?目錄

    • 導出規范:使用命名導出(非默認導出)

typescript

復制

下載

// /src/enums/user.enum.ts
export enum UserRole {ADMIN = "ADMIN",EDITOR = "EDITOR",VIEWER = "VIEWER"
}export enum UserAccountType {STANDARD = "STANDARD",PREMIUM = "PREMIUM",ENTERPRISE = "ENTERPRISE"
}
  1. Vue 組件中的使用規范

    • 在?<script setup>?中直接導入

    • 模板中使用帶命名空間的枚舉值

vue

復制

下載

<script setup lang="ts">
import { UserRole } from '@/enums/user.enum'const currentRole = UserRole.ADMIN
</script><template><div v-if="currentRole === UserRole.ADMIN"><!-- 管理員內容 --></div>
</template>
  1. 字符串 vs 數字枚舉

    • 優先使用?字符串枚舉(更好的可讀性和調試體驗)

    • 數字枚舉僅用于性能關鍵場景或位運算

typescript

復制

下載

// ? 字符串枚舉(推薦)
export enum Direction {UP = "UP",DOWN = "DOWN",LEFT = "LEFT",RIGHT = "RIGHT"
}// ?? 數字枚舉(特定場景使用)
export enum FilePermission {READ = 1,       // 0001WRITE = 2,      // 0010EXECUTE = 4     // 0100
}
  1. 常量枚舉注意事項

    • 使用?const enum?僅適用于性能敏感場景

    • 會完全移除運行時代碼,影響調試

typescript

復制

下載

// ? 常規項目慎用(無法在運行時訪問)
const enum SecretCodes {KEY1 = 0xABC,KEY2 = 0xDEF
}// ? 普通枚舉更安全
export enum ApiKeys {CLIENT_ID = "AK_123456",SECRET = "SK_789012"
}

命名禁忌

  1. 避免的行為

    typescript

    復制

    下載

    // ? 混合大小寫
    enum badNaming {mixedCase = 1  // 避免
    }// ? 單數形式表示集合
    enum Color {RED, GREEN, BLUE  // 應命名為 Colors?
    }// ? 動詞命名
    enum ProcessData {  // 枚舉應是狀態描述START, STOP       // 而非動作
    }
  2. 不要重復前綴

    typescript

    復制

    下載

    // ? 冗余前綴
    enum UserUserRole {  // User 重復USER_ADMIN,USER_EDITOR
    }// ? 簡潔命名
    enum UserRole {ADMIN,EDITOR
    }

項目一致性建議

  1. 在項目中建立?enums?目錄集中管理

  2. 添加 ESLint 規則強制枚舉命名規范:

    json

    復制

    下載

    // .eslintrc.json
    {"rules": {"@typescript-eslint/naming-convention": ["error",{"selector": "enum","format": ["PascalCase"],"prefix": ["Enum"] // 可選前綴},{"selector": "enumMember","format": ["UPPER_CASE"]}]}
    }

遵循這些規范能顯著提升代碼可讀性和維護性,尤其在團隊協作的 Vue+TypeScript 項目中。

在 Vue 3 + TypeScript 項目中,enums?目錄的常規結構通常遵循模塊化和可維護性原則。以下是典型的組織結構和最佳實踐:

標準目錄結構示例

text

復制

下載

src/
├── enums/                   # 枚舉根目錄
│   ├── system/              # 系統級枚舉
│   │   ├── http.enum.ts     # HTTP 狀態碼枚舉
│   │   ├── error-codes.enum.ts
│   │   └── index.ts         # 統一導出
│   │
│   ├── business/            # 業務相關枚舉
│   │   ├── order-status.enum.ts
│   │   ├── payment-method.enum.ts
│   │   └── index.ts
│   │
│   ├── user/                # 用戶相關枚舉
│   │   ├── user-role.enum.ts
│   │   ├── user-status.enum.ts
│   │   └── index.ts
│   │
│   ├── ui/                  # UI/組件相關枚舉
│   │   ├── button-variant.enum.ts
│   │   ├── notification-type.enum.ts
│   │   └── index.ts
│   │
│   ├── shared/              # 跨模塊通用枚舉
│   │   ├── date-formats.enum.ts
│   │   ├── country-codes.enum.ts
│   │   └── index.ts
│   │
│   └── index.ts             # 總入口文件(可選)

關鍵實踐說明

  1. 分類組織

    • 按功能域分組:系統、業務、用戶、UI 等

    • 按模塊分組:適合大型項目(如?auth/,?order/,?product/

    • 通用共享枚舉:放在?shared/?目錄

  2. 文件命名規范

    • 使用?*.enum.ts?后綴明確文件類型

    • 短橫線命名:order-status.enum.ts

    • 枚舉名與文件名一致(PascalCase):

      typescript

      復制

      下載

      // order-status.enum.ts
      export enum OrderStatus {PENDING = "PENDING",PROCESSING = "PROCESSING",SHIPPED = "SHIPPED"
      }
  3. 索引文件(index.ts)
    每個子目錄使用?index.ts?統一導出:

    typescript

    復制

    下載

    // system/index.ts
    export * from './http.enum';
    export * from './error-codes.enum';
  4. 總入口文件(可選)

    typescript

    復制

    下載

    // enums/index.ts
    export * as SystemEnums from './system';
    export * as BusinessEnums from './business';
    export * as UserEnums from './user';

使用場景示例

組件中使用

vue

復制

下載

<script setup lang="ts">
// 按需導入(推薦)
import { OrderStatus } from '@/enums/business/order-status.enum';// 通過索引文件導入
import { UserRole } from '@/enums/user';
</script>
統一導入方式

typescript

復制

下載

// 通過總入口導入(適合頻繁使用的枚舉)
import { SystemEnums, UserEnums } from '@/enums';console.log(SystemEnums.HttpStatus.OK); // 200
console.log(UserEnums.UserRole.ADMIN);  // "ADMIN"

高級組織結構

方案 1:按業務模塊劃分(推薦)

text

復制

下載

enums/
├── order/
│   ├── status.enum.ts
│   ├── payment-type.enum.ts
│   └── index.ts
├── product/
│   ├── category.enum.ts
│   ├── availability.enum.ts
│   └── index.ts
└── auth/├── permission.enum.ts└── index.ts
方案 2:按枚舉類型劃分

text

復制

下載

enums/
├── numeric/
│   ├── http-status.enum.ts
│   └── error-codes.enum.ts
├── string/
│   ├── user-roles.enum.ts
│   └── order-status.enum.ts
└── const/├── ui-variants.enum.ts└── icon-types.enum.ts

最佳實踐建議

  1. 單一職責原則

    • 每個文件只包含?1 個主要枚舉(相關輔助枚舉可共存)

    • 避免創建包含多個無關枚舉的 "global.enum.ts"

  2. 樹搖優化

    typescript

    復制

    下載

    // 避免默認導出(影響 tree-shaking)
    // ? 不推薦
    export default enum Status { ... }// ? 推薦使用命名導出
    export enum OrderStatus { ... }
  3. 常量枚舉處理
    對于?const enum,創建單獨目錄或添加注釋:

    typescript

    復制

    下載

    // system/const-enums/
    // 或添加特殊后綴
    export const enum CacheKeys {USER_PROFILE = "user_profile",APP_CONFIG = "app_config"
    }
  4. 自動生成枚舉
    如果使用 OpenAPI 等工具生成:

    text

    復制

    下載

    enums/
    ├── generated/  # 自動生成的枚舉
    │   ├── api-models.enum.ts
    │   └── ...
    └── manual/     # 手動維護的枚舉├── ui.enum.ts└── ...

典型文件示例

用戶角色枚舉?(enums/user/user-role.enum.ts)

typescript

復制

下載

export enum UserRole {/** 系統管理員 */ADMIN = "ADMIN",/** 內容編輯者 */EDITOR = "EDITOR",/** 普通查看用戶 */VIEWER = "VIEWER",/** 訪客(未登錄用戶) */GUEST = "GUEST"
}// 類型導出(方便同時作為類型使用)
export type UserRoleType = `${UserRole}`;

HTTP 狀態枚舉?(enums/system/http.enum.ts)

typescript

復制

下載

export enum HttpStatus {OK = 200,CREATED = 201,BAD_REQUEST = 400,UNAUTHORIZED = 401,FORBIDDEN = 403,NOT_FOUND = 404,INTERNAL_SERVER_ERROR = 500
}// 狀態碼描述映射
export const HttpStatusMessage: Record<HttpStatus, string> = {[HttpStatus.OK]: "請求成功",[HttpStatus.CREATED]: "資源創建成功",// ...其他描述
};

目錄結構選擇建議

項目規模推薦結構特點
小型項目平鋪結構 (enums/*.enum.ts)簡單直接,無需嵌套
中型項目功能域分組平衡查找效率和組織結構
大型項目業務模塊分組與功能模塊對齊,便于跨團隊協作
對接后端API混合結構(生成+手動)分離自動生成和自定義枚舉

這種組織方式確保:

  1. 快速定位枚舉定義

  2. 避免命名沖突

  3. 支持按需加載

  4. 保持類型系統完整性

  5. 便于維護和擴展

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87350.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一個完整的LSTM風光發電預測與并網優化方案,包含數據處理、模型構建、訓練優化、預測應用及系統集成實現細節

以下是一個完整的LSTM風光發電預測與并網優化方案,包含數據處理、模型構建、訓練優化、預測應用及系統集成實現細節: 風光發電功率預測與并網優化系統 基于LSTM的時間序列預測與儲能協同控制 第一部分:系統架構設計(1200字) 1.1 整體技術路線 #mermaid-svg-U5pxzefmzZ4s…

如何在 MX Linux 上安裝 Mint 的 Cinnamon 桌面 UI

如何在 MX Linux 上安裝 Mint 的 Cinnamon 桌面 UI 你是否想在 MX Linux 上安裝流行的 Linux Mint Cinnamon 圖形用戶界面?那么這里有一個教程…… Cinnamon 是一個類似 Windows 7 的界面,它默認安裝在 Linux Mint 操作系統中。它使 Mint 非常易于理解和使用,這也是 Mint …

OpenStack 入門

目錄 簡介 一、云計算與 OpenStack 基礎概念 1.1 云計算概述 1.2 OpenStack 簡介 二、OpenStack 單機環境部署 2.1 環境準備 2.2 部署前準備工作 2.3 在線部署 OpenStack&#xff08;Train 版本&#xff09; 三、通過 Dashboard 部署 OpenStack 的功能 3.1 登錄 Dash…

【Git】關于項目開發分支的使用規范

背景 在項目開發過程中&#xff0c;往往一個優秀的產品都會出現不斷的版本迭代&#xff0c;我時常在項目發布后對于如何結合后續更新的業務場景在分支上的應用沒有一個很好的辦法&#xff0c;一直也比較苦惱。目前項目的迭代場景如下&#xff0c;一個A項目&#xff0c;經過需求…

msquic的windows版本編譯

首先確保安裝cmake和powershell&#xff08;需要6以上&#xff0c;本人升級到了7.5&#xff09;&#xff0c;vs&#xff08;本人用的vs2022&#xff09; powershell&#xff0c;默認是5&#xff0c;會編譯不成功&#xff0c;所以附帶一個升級的流程 $PSVersionTable.PSVersion …

批量文件重命名工具 OncePower ,永久免費!

軟件介紹 適用于Windows OncePower是一款Windows批量重命名工具&#xff0c;支持基本及高級匹配重命名&#xff0c;無需復雜正則。特色包括匹配修改、長度截取、日期命名、前綴后綴修改及TXT文件導入。支持保留特定內容、批量移動文件和刪除空文件夾。可保存設置&#xff0c;…

Python入門Day6.1:異常處理

一、什么是異常&#xff08;Exception&#xff09;&#xff1f; 異常是指程序運行過程中出現的錯誤情況。比如&#xff1a; 打開一個不存在的文件0作為除數列表索引越界類型轉換失敗 二、基本結構&#xff1a;try...except try:# 可能出錯的代碼 except 錯誤類型:# 出錯時執…

C++中的標準模板(STL)

C中的核心標準模板包含&#xff1a;容器、迭代器、算法、函數對象、適配器。 1.容器 容器提供了各種數據結構&#xff0c;包括向量(vector)、鏈表(list)、隊列(queue)、棧(stack)、集合(set)、映射(map)等&#xff0c;可以根據實際需求選擇合適的容器。 容器分為三大類&…

excel 待辦日歷軟件(需要宏)特別推薦

Excel待辦日歷軟件是一款基于Excel表格的日程管理工具&#xff0c;能夠幫助用戶更高效地管理待辦事項和日程安排。用戶可以在軟件中創建不同的任務列表&#xff0c;以便更好地進行管理和跟蹤。軟件還提供了日歷視圖&#xff0c;用戶可以直觀地查看和安排每日的任務&#xff0c;…

激活函數-sigmoid、tanh、relu、softmax對比

激活函數是神經網絡的核心組件&#xff0c;用于引入非線性特性&#xff0c;使網絡能夠學習復雜模式。以下從定義、作用、分類及應用場景進行詳細解析&#xff1a; &#x1f50d; ??一、定義?? 激活函數&#xff08;Activation Function&#xff09;是作用于神經元輸出的?…

三步走實現嵌入式硬件與軟件開發

目錄 ? 一、嵌入式硬件與軟件的邊界(為你后面每階段安排任務打基礎) ? 二、三階段開發策略規劃(以你的三步走為主線) ??階段1:確定能做 → 外包技術顧問協助選型 + 需求拆解 + 采購建議 適用角色 關鍵目標 如何管理? 工具推薦 ??階段2:會做一些 → 小范圍…

ubuntu運行cursor

一.CURSOR官網下載AppImage文件 https://www.cursor.com/en/download 二、解壓 AppImage 繞過掛載機制 解決&#xff1a;默認使用Cursor.AppImage 會自動掛載臨時目錄在/tmp目錄下&#xff0c;出現沒有權限掛載的報錯問題 若掛載點仍不可寫&#xff0c;直接解壓 AppImage 運…

PTA天梯賽L1 071-080題目解析

目錄 1.L1-071 前世檔案 2.L1-072 刮刮彩票 3.L1-073 人與神 4.L1-074 兩小時學完C語言 5.L1-075 強迫癥 6.L1-076 降價提醒機器人 7.L1-077 大笨鐘的心情 8.L1-078 吉老師的回歸 9.L1-079 天梯賽的善良 10.L1-080 乘法口訣數列 1.L1-071 前世檔案 解析&#xff1a;…

git常用操作 --- idea編譯器 --- 公司實戰版

前言 雖然git的命令方式很靈活,但是還是不夠人性化,不夠方便。 如果對git操作不熟練特別容易犯迷,可能敲一會命令就不知道當前在干什么了,下一步要干什么。 下面,我將演示在Java開發中使用最常用最經典的idea編譯器來進行git操作,非常人性化和方便。 如果沒有安裝git和初始…

window顯示驅動開發—流輸出階段

流輸出 (SO) 階段可以在這些頂點到達光柵器之前將頂點流式傳輸到內存。 流輸出的運行方式類似于管道中的點擊。 即使數據繼續向下流向光柵器&#xff0c;也可以打開此點擊。 通過流輸出發送的數據連接到緩沖區。 這些緩沖區可以在后續傳遞上作為管道輸入進行循環。 流輸出的一…

備份docker desktop中的opengauss數據庫

文章目錄 備份docker desktop中的opengauss數據庫一、前提條件二、備份步驟三、注意事項四、自動化備份&#xff08;可選&#xff09;五、驗證備份 備份docker desktop中的opengauss數據庫 ? 以下是在 Docker Desktop 中備份 OpenGauss 數據庫&#xff08;以你的環境為例&…

實時中值濾波 + 低通濾波 示例程序(STM32環境)

一、功能概述 本示例實現兩個濾波器&#xff1a; 中值濾波器&#xff08;Median Filter&#xff09;&#xff1a;對短期異常值&#xff08;如尖峰噪聲&#xff09;有良好的抑制能力&#xff1b;低通濾波器&#xff08;Low-Pass Filter&#xff09;&#xff1a;對數據進行平滑…

AtCoder Beginner Contest 409 題解

本文為AtCoder Beginner Contest 409 的詳細題解 目錄 題目A: 題目大意: 解題思路: 代碼(C): 題目B: 題目大意: 解題思路: 代碼(C): 題目C: 題目大意: 解題思路: 代碼(C): 題目D: 題目大意: 解題思路: 代碼(C): 題目E: 題目大意: 解題思路: 代碼(C): 題目A…

Spring @Environment 典型用法

簡單說&#xff1a;Spring 里沒有直接叫 Environment 的注解&#xff0c;更準確說常用的是 Autowired 注入 Environment 對象&#xff0c;或者結合 Value 配合 Environment 讀取配置 。 支持從以下來源讀取&#xff1a; 1、application.properties / .yaml 2、JVM 參數&#xf…

【集合與結構體】5.2(課本題)總結代碼

ds老師產物&#xff0c;純為期末復習&#xff0c;自用。 題目1 編寫程序&#xff0c;將一個整型變量右移 4 位&#xff0c;并以二進制數形式輸出該整數在移位前和移位后的數值。 //觀察系統填補空缺的數位情況 代碼解答 #include <iostream>//編寫程序&#xff0c;將一個…