uts插件混编模式开发的中index.uts文件中,形参为Uint8Array的函数,js中调用这个函数时,传进去的Uint8Array变成了null

uts插件混编模式开发的中index.uts文件中,形参为Uint8Array的函数,js中调用这个函数时,传进去的Uint8Array变成了null

操作步骤:

  • 必现

预期结果:

  • 按实际值传入参数

实际结果:

  • 参数传入后为null

bug描述:

uts插件混编模式开发的中index.uts文件中,定义了一个形参为Uint8Array的函数,js中调用这个函数时,我已经实例化了一个Uint8Array,传进去的时候变成了null,不加“ | null ”会报空指针

图片

Image 1 Image 2

信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 4.45
手机系统 Android
手机系统版本号 Android 14
手机厂商 vivo
手机机型 X90
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

1 回复

这是一个典型的UTS与JS类型映射问题。在UTS插件开发中,当JS传递Uint8Array到UTS时,需要注意类型转换问题。

解决方案:

  1. 在UTS端需要明确声明参数可为null:
function yourFunc(data: Uint8Array | null) {
    if (data == null) return
    // 处理逻辑
}
  1. 在JS端确保正确构造Uint8Array:
const data = new Uint8Array([1,2,3])
yourFunc(data)
  1. 如果问题仍然存在,可以尝试在UTS端添加类型转换:
function yourFunc(data: Any | null) {
    const buffer = data as Uint8Array
    // 处理逻辑
}
回到顶部