一个通过 interface 生成 class 的命令行工具,适用于 TS 和 ArkTS
npm i interface2class -g- 文件
demo.ts
enumGender{MAN='men',WOMAN='women'}interfaceResponse{code: numbermessage: stringdata: User}interfaceUser{nickname: stringage: numberavatar: ResourceStrcreateAt: Dategender: Genderhobby: string[]follows: User[]isValid: 0|1}- 执行命令
i2c ./demo.ts# 不生成构造器
i2c simple ./demo.ts- 自动写入
demo.ts
enumGender{MAN='men',WOMAN='women'}interfaceResponse{code: numbermessage: stringdata: User}interfaceUser{nickname: stringage: numberavatar: ResourceStrcreateAt: Dategender: Genderhobby: string[]follows: User[]isValid: 0|1}// auto gen →exportclassResponseModelimplementsResponse{code: number=0message: string=''data: User=newUserModel({}asUser)constructor(model: Response){this.code=model.codethis.message=model.messagethis.data=model.data}}exportclassUserModelimplementsUser{nickname: string=''age: number=0avatar: ResourceStr=''createAt: Date=newDate()gender: Gender=Gender.MANhobby: string[]=[]follows: User[]=[]isValid: 0|1=0constructor(model: User){this.nickname=model.nicknamethis.age=model.agethis.avatar=model.avatarthis.createAt=model.createAtthis.gender=model.genderthis.hobby=model.hobbythis.follows=model.followsthis.isValid=model.isValid}}如果出现生成 class 失败,请格式化后再生成
- 文件
demo.ts
/*** 报文数据*/exportinterfaceData{/** * 总页数 */pageTotal?: number;/** * 数据集合 */rows?: Row[];/** * 总数 */total?: number;[property: string]: any;}- 执行命令
i2c format ./demo.ts- 格式化
demo.ts
/** 报文数据 */exportinterfaceData{/** 总页数 */pageTotal: number|null;/** 数据集合 */rows: Row[]|null;/** 总数 */total: number|null;}