uni-app uts插件定义参数方式不统一,android需要用type定义,harmony需要用interface定义
uni-app uts插件定义参数方式不统一,android需要用type定义,harmony需要用interface定义
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:windows10
HBuilderX类型:正式
HBuilderX版本号:4.75
手机系统:Android
手机系统版本号:Android 11
手机厂商:小米
手机机型:与机型无关
页面类型:vue
vue版本:vue3
打包方式:云端
项目创建方式:HBuilderX
操作步骤:
使用描述中的代码就可以复现
预期结果:
在不同平台下可以统一用interface或type定义参数类型
实际结果:
在鸿蒙平台下需要用interface定义参数类型,在安卓平台下需要用type定义参数类型
bug描述:
uts插件定义参数类型不统一,android需要用type定义,harmony需要用interface定义,我的uts插件导出接口函数的输入参数格式为object类型,包括两个函数,格式如下,
VoidCB {
resolve: () => void;
reject: (err: string) => void;
}
但是在安卓和鸿蒙平台下需要用两种语法定义,定义代码如下:
// #ifdef APP-HARMONY
export interface VoidCB {
resolve: () => void;
reject: (err: string) => void;
}
// #endif
// #ifdef APP-ANDROID
export type VoidCB={
resolve():void;
reject(err:any):void;
}
// #endif
export type TestCB= (cb:VoidCB) => void
export const testCB:TestCB= function (cb:VoidCB):void {
console.log("[reject]",cb.reject);
console.log("[resolve]",cb.resolve);
}
报错情况:
- 在鸿蒙平台下如果用type定义参数,编译报错,不可以将object定义为type,只可以定义为interface
- 在安卓平台下,如果用interface定义参数,在正常的uni-app页面或js中调用组件会无法传参,例如如下的调用过程
import { VoidCB,testCB } from '@/uni_modules/sd-md';
function test(){
var cb:VoidCB ={
resolve:()=>{
console.log('resolve');
},
reject:(err)=>{
console.log('reject');
}
}
testCB(cb )
}
更多关于uni-app uts插件定义参数方式不统一,android需要用type定义,harmony需要用interface定义的实战教程也可以访问 https://www.itying.com/category-93-b0.html

