uts插件混编模式开发的中index.uts文件中,形参为Uint8Array的函数,js中调用这个函数时,传进去的Uint8Array变成了null
uts插件混编模式开发的中index.uts文件中,形参为Uint8Array的函数,js中调用这个函数时,传进去的Uint8Array变成了null
操作步骤:
- 必现
预期结果:
- 按实际值传入参数
实际结果:
- 参数传入后为null
bug描述:
uts插件混编模式开发的中index.uts文件中,定义了一个形参为Uint8Array的函数,js中调用这个函数时,我已经实例化了一个Uint8Array,传进去的时候变成了null,不加“ | null ”会报空指针
图片
信息 | 值 |
---|---|
产品分类 | 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时,需要注意类型转换问题。
解决方案:
- 在UTS端需要明确声明参数可为null:
function yourFunc(data: Uint8Array | null) {
if (data == null) return
// 处理逻辑
}
- 在JS端确保正确构造Uint8Array:
const data = new Uint8Array([1,2,3])
yourFunc(data)
- 如果问题仍然存在,可以尝试在UTS端添加类型转换:
function yourFunc(data: Any | null) {
const buffer = data as Uint8Array
// 处理逻辑
}