利用 i2c 快速從 Interface 生成 Class

利用 i2c 快速從 Interface 生成 Class(支持 TS & ArkTS)

在日常 TypeScript 或 ArkTS 開發中,需要根據 interface 定義手動實現對應的 class,這既重復又容易出錯。分享一個命令行工具 —— interface2class,簡稱 i2c,可以自動完成class生產。


🔧 工具簡介

  • 名稱interface2class(i2c)
  • 作用:根據 .ts.ets 文件中的 interface 自動生成對應的 class 實現
  • 適用語言:TypeScript、ArkTS
  • 項目地址:https://github.com/HarmonyOS-Next/interface2class

📦 安裝方式

推薦使用全局安裝:

npm install -g interface2class

?? 使用示例

假設有一個 ArkTS 的接口文件 message.ets,內容如下:

export interface Message {id: number;title: string;content: string;send(): void;
}

運行以下命令:

i2c ./message.ets

即可自動生成一個 message.ts 文件,內容如下:

export class MessageImpl implements Message {id: number;title: string;content: string;constructor() {this.id = 0;this.title = '';this.content = '';}send(): void {throw new Error("Method not implemented.");}
}

非常適合快速搭建原型、數據模型、Mock 類等。


? 遇到的問題:EPERM 權限錯誤

在安裝時,我遇到了如下報錯:

npm ERR! code EPERM
npm ERR! syscall mkdir
npm ERR! path D:\chang\dev_tools\DevEco Studio\tools\node\node_modules\interface2class
npm ERR! errno -4048
npm ERR! Error: EPERM: operation not permitted, mkdir ...

🛠? 原因分析

這是 Windows 系統下常見的 權限不足 問題,主要原因可能包括:

  • DevEco Studio 自帶 Node 環境為受限目錄,無法寫入
  • 當前終端未以管理員權限運行
  • 系統安全軟件(如殺毒軟件)攔截

? 解決方法

采用了以下方案成功解決:

DevEco Studio 安裝目錄中 node_modules 設置為“可修改”權限。

或者也可以選擇:

  • 右鍵 PowerShell / CMD → 以管理員身份運行

  • 或者使用自己系統安裝的 Node(非 DevEco 內置),例如:

    npm install -g interface2class
    

📝 總結

優點說明
🚀 快速從 interface 一鍵生成 class,省時省力
🔁 自動化無需重復寫構造函數、屬性定義
🧱 項目友好支持 TS 與 ArkTS,適合 HarmonyOS 生態

如果你也在做多模型 ArkTS 項目,或正在用 HarmonyOS 的 DevEco Studio,不妨嘗試這個工具。


附上命令驗證小技巧:

i2c -v   # 查看版本號
i2c      # 查看幫助信息

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

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

相關文章

015-C語言字符函數和字符串函數

C語言字符函數和字符串函數 文章目錄 C語言字符函數和字符串函數1. 字符分類函數2. 字符轉換函數3. strlen4. strcpy5. strcat6. strcmp7. strncpy8. strncat9. strncmp10. strstr11. strtok12. strerror 1. 字符分類函數 C語言中有一系列函數是專門做字符分類的,也…

CGAL邊折疊edge_collapse的問題

使用edge_collapse對一個模型簡化,之后回收垃圾,collect_garbage 處理之前的頂點和三角形數量: number_of_vertices: 955730 number_of_faces: 1903410 num_vertices: 955730 num_faces: 1903410 處理之后的頂點和三角形數量:…

用c語言實現——順序隊列支持用戶輸入交互、入隊、出隊、查找、遍歷、計算隊列長度等功能。確定判斷判滿的方法為:犧牲一個存儲單元方式

一、知識介紹 1.基本原理 在順序隊列中,我們使用一個固定大小的數組來存儲隊列中的元素,并使用兩個指針(front 和 rear)來分別表示隊頭和隊尾的位置。 隊列為空的條件:front rear 隊列滿的條件:rear 1…

JVM 系列:JVM 內存結構深度解析

你點贊了嗎?你關注了嗎?每天分享干貨好文。 高并發解決方案與架構設計。 海量數據存儲和性能優化。 通用框架/組件設計與封裝。 如何設計合適的技術架構? 如何成功轉型架構設計與技術管理? 在競爭激烈的大環境下&#xff0c…

手機上的APN是什么,該怎么設置

網上說改個APN就可以讓網速快幾倍,那到底APN是個什么東西,真的能讓網速快幾倍嗎? APN的作用 網絡連接基礎:APN(接入點名稱)是手機連接移動網絡的“橋梁”,負責識別運營商網絡類型(…

微服務治理與可觀測性

服務注冊與發現 核心功能 服務實例動態變化:實例可能因擴縮容、故障或遷移導致IP變動。服務依賴解耦:調用方無需硬編碼服務地址,降低耦合度。負載均衡:自動選擇健康實例,提升系統可用性。 核心組件 服務注冊中心&am…

嵌入式linux系統中內存管理的方法與實現

第一:linux內核管理詳解圖形 第二:Linux內存管理詳細分析 深入剖析Linux內核內存管理 作為嵌入式系統開發者,理解Linux內核的內存管理對于開發高效、穩定的系統至關重要。在這篇文章中,我們將詳細解析Linux內核如何劃分物理內存和虛擬內存,頁表、MMU(內存管理單元)與TL…

【dataframe顯示不全問題】打開一個行列超多的excel轉成df之后行列顯示不全

出現問題如下圖: 解決方案~ display.width解決列顯示不全 pd.set_option(display.max_columns,1000) pd.set_option(display.width, 1000) pd.set_option(display.max_colwidth,1000) pd.set_option(display.max_rows,1000)

Linux——Shell編程之正則表達式與文本處理器(筆記)

目錄 基礎正則表達式 1:基礎正則表達式示例 (4)查找任意一個字符“.”與重新字符“*” (5)查找連續字符范圍“{ }” 文本處理器 一、sed工具 二、awk工具 (1)按行輸出文本 (2&#xff0…

OpenHarmony系統-源碼下載,環境搭建,編譯,燒錄,調試

獲取源碼 以OpenHarmony5.0.3為例 repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-5.0.3-Release --no-repo-verify repo sync -c repo forall -c git lfs pull搭建環境 安裝必要的工具和命令 apt-get install -y apt-utils binutils bison flex bc …

Vue3 本地打包啟動白屏解決思路!! !

“為什么我訪問 http://127.0.0.1:5501/index.html 白屏,刪了 index.html 再訪問 / 就又活過來了?” —— 你的項目與 SPA 路由的“宮斗大戲” 一、問題復現 場景 本地通過 VSCode Live Server(或其他靜態服務器)啟動了打包后的 V…

數字人(2):數字人技術全景透視(2025演進版)

隨著人工智能技術的迅猛發展,數字人技術發展也是一日千里。站在當下,著眼未來,我們一起在回眸透視過去的基礎上,一起共同眺望數字人技術的未來。 一、數字人技術體系重構 我們可以用三維定義對數字人技術進行框架重構 維度 技術內涵 典型特征 物理層 人體數字化建模技術 …

小剛說C語言刷題——1035 判斷成績等級

1.題目描述 輸入某學生成績,如果 86分以上(包括 86分)則輸出 VERY GOOD ,如果在 60到 85之間的則輸出 GOOD (包括 60和 85),小于 60 的則輸出 BAD。 輸入 輸入只有一行,包括 1個整數。 輸出 輸出只有一行&#xf…

React-在使用map循環數組渲染列表時須指定唯一且穩定值的key

在渲染列表的時候,我們須給組件或者元素分配一個唯一值的key, key是一個特殊的屬性,不會最終加在元素上面,也無法通過props.key來獲取,僅在react內部使用。react中的key本質是服務于diff算法, 它的默認值是null, 在diff算法過程中…

Zookeeper的通知機制是什么?

大家好,我是鋒哥。今天分享關于【Zookeeper的通知機制是什么?】面試題。希望對大家有幫助; Zookeeper的通知機制是什么? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 Zookeeper 的通知機制是其核心特性之一&#xf…

【LangChain實戰】構建下一代智能問答系統:從RAG架構到生產級優化

打破傳統問答系統的次元壁 當ChatGPT在2022年掀起AI革命時,開發者們很快發現一個殘酷現實:通用大模型在專業領域的表現如同拿著地圖的盲人,既無法理解企業私有數據,也無法保證事實準確性。這催生了RAG(檢索增強生成&a…

UDS中功能尋址可以請求多幀數據嘛?當ECU響應首幀后,診斷儀是通過物理尋址發送流控幀嘛?

文章目錄 1. 前言??1.1 功能尋址是否支持請求多幀數據?1.2 ECU發送首幀(FF)后,診斷儀如何發送流控幀(FC)?1.3 協議依據(ISO 14229-1)1.4 實際應用注意事項總結1. 前言?? 在UDS(Unified Diagnostic Services)協議中,功能尋址與物理尋址的使用規則以及多幀數據傳…

PHP異常處理__Throwable

在 PHP 里,Throwable 是一個極為關鍵的接口,自 PHP 7 起被引入。它為錯誤和異常處理構建了一個統一的框架。下面會詳細介紹 Throwable 的相關內容。 1. 基本概念 Throwable 是 Exception 和 Error 的父接口。在 PHP 7 之前,異常&#xff08…

無需訓練的具身導航探索!TRAVEL:零樣本視覺語言導航中的檢索與對齊

作者: Navid Rajabi, Jana Kosecka 單位:喬治梅森大學計算機科學系 論文標題:TRAVEL: Training-Free Retrieval and Alignment for Vision-and-Language Navigation 論文鏈接:https://arxiv.org/pdf/2502.07306 主要貢獻 提出…

Vue3+Vite+TypeScript+Element Plus開發-22.客制Table組件

系列文檔目錄 Vue3ViteTypeScript安裝 Element Plus安裝與配置 主頁設計與router配置 靜態菜單設計 Pinia引入 Header響應式菜單縮展 Mockjs引用與Axios封裝 登錄設計 登錄成功跳轉主頁 多用戶動態加載菜單 Pinia持久化 動態路由 -動態增加路由 動態路由-動態刪除…