Vue3+TypeScript 導入枚舉(Enum)最佳實踐

在 Vue 3 + TypeScript 項目中,導入枚舉時通常不需要使用?import type,但具體取決于使用場景。以下是詳細說明:

1.?枚舉的特殊性

枚舉在 TypeScript 中既是類型(Type)也是值(Value)

typescript

復制

下載

// 定義枚舉 (enums.ts)
export enum Status {Active = "ACTIVE",Inactive = "INACTIVE"
}

2.?導入規則

使用場景導入方式示例代碼是否推薦
需要訪問枚舉的值常規?importimport { Status } from './enums'? 是
僅用于類型注解import type?或常規導入import type { Status } from ...?? 可選

3.?具體場景分析

? 需要訪問枚舉值(最常見)

vue

復制

下載

<script setup lang="ts">
// 常規導入(推薦)
import { Status } from './enums';// 訪問枚舉值(需要實際對象)
const currentStatus = Status.Active;
</script>

必須使用常規?import,因為運行時需要枚舉對象。

?? 僅用于類型注解(較少見)

vue

復制

下載

<script setup lang="ts">
// 使用 import type(可選)
import type { Status } from './enums';// 僅作為類型使用
const setStatus = (status: Status) => { /* 實現 */ 
};
</script>

此時?import type?可行,但常規導入同樣有效且更常見。

4.?最佳實踐建議

  1. 默認使用常規導入
    大多數情況下你需要訪問枚舉值(如?Status.Active),直接用:

    ts

    復制

    下載

    import { Status } from './enums';
  2. 僅當明確不訪問值時用?import type
    適用于純類型場景(如函數參數類型),可減少編譯后代碼體積(但影響甚微)。

5.?TS編譯機制

  • 使用?import type?時:枚舉不會出現在編譯后的 JS 文件中

  • 使用常規?import?時:枚舉會被編譯為真實 JS 對象

    js

    復制

    下載

    // 編譯后結果(常規導入時)
    export var Status;
    (function (Status) {Status["Active"] = "ACTIVE";Status["Inactive"] = "INACTIVE";
    })(Status || (Status = {}));

結論

  • 大多數情況:用常規導入?import { EnumName } from '...'

  • 純類型場景:可用?import type,但常規導入更簡單統一

  • 不要混用:若同時需要值和類型,必須用常規導入

根據實際統計數據,在 Vue+TS 項目中超過 95% 的枚舉導入使用常規方式,因其主要作用是為模板和邏輯提供具體值。

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

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

相關文章

主成分分析(PCA)例題——給定協方差矩陣

向量 x x x的相關矩陣為 R x [ 0.3 0.1 0.1 0.1 0.3 ? 0.1 0.1 ? 0.1 0.3 ] {\bm R}_x \begin{bmatrix} 0.3 & 0.1 & 0.1 \\ 0.1 & 0.3 & -0.1 \\ 0.1 & -0.1 & 0.3 \end{bmatrix} Rx? ?0.30.10.1?0.10.3?0.1?0.1?0.10.3? ? 計算輸入向量…

RTSP播放器低延遲實踐:一次對毫秒級響應的技術探索

? 為什么說“大牛直播SDK的RTSP播放器延遲表現行業領先”&#xff1a; 1. 毫秒級延遲&#xff08;100ms~250ms&#xff09; windows平臺rtsp播放器延遲測試 在業內常見的 RTSP 播放器中&#xff0c;傳統開源方案&#xff08;如 VLC、FFmpeg 播放器封裝&#xff09;延遲普遍在…

【postgresql中timestamp為6是什么意思?】

postgresql中timestamp為6是什么意思&#xff1f; postgresql中timestamp為6是什么意思&#xff1f;示例注意事項 postgresql中timestamp為6是什么意思&#xff1f; 在 PostgreSQL 中&#xff0c;TIMESTAMP 類型用于存儲日期和時間信息。當你提到 TIMESTAMP(6)&#xff0c;這里…

EC2實例(Amazon Linux 2023)監控磁盤讀寫速度和I/O負載

在viewer端進行日志分析的時候&#xff0c;由于日志比較大&#xff0c;每個4.5G&#xff0c;一共9個viewer端&#xff0c;對應9個日志文件&#xff0c;而且判斷音頻幀和視頻幀是否卡頓時&#xff0c;需要的樣本也很多&#xff0c;各15000行&#xff0c;分析完成需要5分20秒左右…

SpringBoot電腦商城項目--收獲地址列表

1. 收獲地址列表展示-持久層 1.1 sql語句 1.2 AddressMapper接口編寫抽象方法 /*** 根據用戶id查詢用戶的收貨地址數據* param uid* return*/List<Address> findByUid(Integer uid); 1.3 在xml文件中進行sql映射 <!-- DESC降序 --><select id"fin…

學校住宿繳費系統h5-——東方仙盟——仙盟創夢IDE

代碼: <div class"form-group"><h4 style"color: #006400; margin-bottom: 15px;">費用明細 <input name"room_unit_price" id"room_unit_price" type"number" value"" style"width:65px;…

docker 目錄更改,必須做數據遷移才能啟動

要修改 Docker 鏡像的存儲位置 并遷移數據&#xff08;如從 /var/lib/docker 遷移到 /mnt/data/docker&#xff09;&#xff0c;需要以下步驟&#xff1a; 1. 停止 Docker 服務 在修改配置和遷移數據前&#xff0c;先停止 Docker 服務&#xff1a; sudo systemctl stop docke…

根據圖片理解maven

maven 是一款強大的項目管理與構建工具&#xff0c;在 Java 開發中尤為常用&#xff0c;結合這張圖&#xff0c;從核心功能、倉庫體系、工作流程三方面快速了解&#xff1a; 一、核心作用 項目構建&#xff1a;自動完成編譯、測試、打包、部署等流程&#xff08;比如把 .java…

阿里云中間件:解鎖云端應用的強大引擎

走進阿里云中間件 在云計算的宏大版圖中&#xff0c;阿里云無疑是一位舉足輕重的參與者。而阿里云中間件&#xff0c;作為阿里云服務體系的關鍵構成部分&#xff0c;在整個云計算架構里扮演著不可或缺的角色&#xff0c;宛如一座橋梁&#xff0c;緊密地連接著底層基礎設施與上…

windows下FFmpeg精簡

1. 安裝MSYS2和必要工具 下載并安裝MSYS2打開 MSYS2中的 MinGW 64-bit 終端更新系統包&#xff1a; pacman -Syu # 如果提示關閉終端&#xff0c;關閉后重新打開再次運行&#xff1a; pacman -Su裝編譯工具鏈&#xff1a; pacman -S --needed base-devel mingw-w64-x86_64-t…

WPF數據綁定疑惑解答--(關于控件的Itemsource,Collection綁定)

1. ListView綁定的數據類型問題 在 MainWindow 的構造函數中綁定 List11.ItemsSource List<string> rpcListnew List<string>(); public MainWindow() {InitializeComponent();// 確保 List11 的 ItemsSource 已經綁定到 rpcListList11.ItemsSource rpcList; } …

【Centos7安裝Cloudera Manager5.12、CDH5.12詳細步驟】

安裝Cloudera Manager&#xff08;5.12.1&#xff09;一定要細心&#xff0c;每一步走錯都可能造成最終安裝失敗。 安裝Cloudera Manager&#xff08;5.12.1&#xff09;一定要硬件資源充足。 本示例參考了眾多網上資料&#xff08;放在文末&#xff09;&#xff0c;消耗了1000…

青少年編程與數學 01-011 系統軟件簡介 25 Web服務器及代理軟件

青少年編程與數學 01-011 系統軟件簡介 25 Web服務器及代理軟件 一、Web 服務器軟件&#xff08;一&#xff09;定義與功能&#xff08;二&#xff09;歷史與主要產品1. Apache HTTP Server2. Nginx3. Microsoft Internet Information Services&#xff08;IIS&#xff09;4. L…

Vue的隱形魔法:虛擬DOM和Diff算法如何讓頁面飛起來?

大家好&#xff0c;我是江城開朗的豌豆&#xff0c;一名擁有6年以上前端開發經驗的工程師。我精通HTML、CSS、JavaScript等基礎前端技術&#xff0c;并深入掌握Vue、React、Uniapp、Flutter等主流框架&#xff0c;能夠高效解決各類前端開發問題。在我的技術棧中&#xff0c;除了…

SAP_HANA常用sql合集——持續更新中

一、時間格式轉換 (1)切換日期格式yyyymmdd的字段數據為yyyy-mm-dd select TO_VARCHAR(TO_DATE(t1.time1, YYYYMMDD), YYYY-MM-DD) AS time1, TO_VARCHAR(TO_DATE(t1.time2, YYYYMMDD), YYYY-MM-DD) AS time2 from table

【AI Study】第四天,Pandas(5)- 數據可視化

文章概要 本文詳細介紹 Pandas 的數據可視化功能&#xff0c;包括&#xff1a; 基礎繪圖高級可視化統計圖表實際應用示例 基礎繪圖 折線圖 # 基本折線圖 df.plot(x日期, y值) df.plot.line(x日期, y值)# 多列折線圖 df.plot(x日期, y[列1, 列2])# 自定義樣式 df.plot(x日期…

Linux故障排查

目錄 案例1&#xff1a;GRUB引導故障 案例2&#xff1a;文件系統只讀故障 案例3&#xff1a;OOM Killer觸發 案例4&#xff1a;系統啟動卡住&#xff08;initramfs損壞&#xff09; 案例5&#xff1a;磁盤空間耗盡 案例6&#xff1a;SSH登錄緩慢 案例7&#xff1a;邏輯卷…

pikachu靶場通關筆記36 越權01之水平越權

目錄 一、水平越權 二、賬戶功能探測 1、登錄賬號lucy 2、登錄賬號lili 3、登錄賬號kobe 三、源碼分析 四、滲透實戰 1、登錄lucy賬號 2、越權訪問lili賬戶資料 3、越權訪問kobe賬戶資料 本系列為《pikachu靶場通關筆記》滲透實戰&#xff0c;本文通過對越權關卡源碼…

javaweb -Ajax

Ajax的定義 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一種用于創建異步 Web 應用的技術&#xff0c;允許網頁在不重新加載整個頁面的情況下與服務器交換數據并更新部分內容。 Ajax的核心特點 異步通信&#xff1a;通過后臺與服務器交互&#xff0c;用…

11.OpenCV—聯合QT環境配置

1.QT環境變量配置 在Qt中配置OpenCV 3.4.6與Visual Studio 2017的步驟如下&#xff1a; 一、前期準備 安裝組件驗證 確認已安裝Qt的MSVC2017版本&#xff08;如Qt 5.12 MSVC2017 64-bit&#xff09; 檢查Visual Studio 2017的MSVC編譯器是否正常工作 OpenCV庫準備 從官網…