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);
}

报错情况:

  1. 在鸿蒙平台下如果用type定义参数,编译报错,不可以将object定义为type,只可以定义为interface
  2. 在安卓平台下,如果用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

回到顶部