当前位置: 首页 > web >正文

利用 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.xdnf.cn/news/370.html

相关文章:

  • Linux系统:进程终止的概念与相关接口函数(_exit,exit,atexit)
  • 浅析vue2和vue3的区别
  • UIjavaScritIU
  • C++ 讲解—函数模板
  • Matlab画海洋与大气变量的时间序列并带标记面的三维折线图--来源粉丝
  • React-useImperativeHandle (forwardRef)
  • 美信监控易:数据采集与整合的卓越之选
  • JSAPI2.2—日期
  • 蓝桥杯之递归
  • ClawCloud的免费空间(github用户登录可以获得$5元/月的免费额度)
  • java怎么完善注册,如果邮箱中途更换,能否判断
  • 【Flutter DevTools】性能优化的瑞士军刀
  • FFMPEG-视频解码-支持rtsp|rtmp|音视频文件(低延迟)
  • 基于MTF的1D-2D-CNN-GRU-Attention时序图像多模态融合的故障识别,适合研究学习(Matlab完整源码和数据),附模型研究报告
  • 基于springboot的个人财务管理系统的设计与实现
  • 【图片识别分类】如何快速识别照片中的水印文字,对图片进行关键字分类,快速整理水印相机拍摄图片,基于WPF和腾讯OCR的技术实现
  • 完美解决浏览器不能复制的问题(比如赛氪网的中题库练习题)
  • centos7更换yum源不生效
  • 原型模式详解及在自动驾驶场景代码示例(c++代码实现)
  • Java线程的几种状态
  • 文章记单词 | 第37篇(六级)
  • 最优树搜索策略
  • 民办生从零学C的第十一天:操作符
  • pip list | grep paho-mqtt 如何查看这个包的保存路径
  • 三轴云台之模块设计篇
  • 网工_FTP协议
  • QML 自定义组件外观和行为
  • 一个可以自定义Java服务名日志打印的小工具
  • TCP的三次握手和四次挥手
  • 【IDEA2020】 解决开发时遇到的一些问题