uni-app 报Bug uts传入number类型 编译报错期望Number实际int 感觉莫名其妙的
uni-app 报Bug uts传入number类型 编译报错期望Number实际int 感觉莫名其妙的
操作步骤:
- uts语法
预期结果:
- 正常
实际结果:
- 错误
bug描述:
- uts写插件在android平台编译报错
- inferred type is Number but Int was expected
- 传入number类型自动转成kotlin int类型,而编译报错需要Number类型,代码提示是number,感觉很混乱
- inferred type is Row? but Row was expected
- 传入Row类型,期望Row?类型,也是感觉很奇怪
- inferred type is Number but Int was expected
图片

| 信息类别 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | 11 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.99 |
| 手机系统 | Android |
| 手机系统版本 | Android 12 |
| 手机厂商 | 模拟器 |
| 手机机型 | mumu |
| 页面类型 | vue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 报Bug uts传入number类型 编译报错期望Number实际int 感觉莫名其妙的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
那个setColumHidden方法的第一个参数,声明需要int。你可以看下是不是那个方法的定义处写错了,如果确定需要int,那就用number的toInt方法转换。
?这个问号代表可为空。这个我们看看能不能兼容下。
在HBuilderX3.99的帮助菜单或控制台报bug,可以更简单的提交复现工程
更多关于uni-app 报Bug uts传入number类型 编译报错期望Number实际int 感觉莫名其妙的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题2是指:
类型不匹配: 推断类型是Row?(可为空的Row),但预期的是Row。
在uts中
Row? 不能传给 Row
Row 可以传给 Row?
在 uni-app 中使用 uts(Uni TypeScript)时,如果你遇到传入 number 类型时编译报错,提示期望 Number 但实际是 int,这可能是由于 uts 在处理类型时的一些限制或类型推断问题。
可能的原因和解决方案:
-
类型推断问题:
uts在处理number类型时,可能会将其推断为int或其他具体的数值类型,而不是通用的Number类型。- 你可以尝试显式地指定类型为
Number,而不是依赖类型推断。
let num: Number = 42; // 显式指定为 Number 类型 -
类型转换:
- 如果你需要将
int或其他数值类型转换为Number,可以使用Number()构造函数进行转换。
let num: Number = Number(42); // 将 int 转换为 Number - 如果你需要将
-
检查 API 文档:
- 确保你调用的 API 或函数期望的参数类型是
Number,而不是int或其他具体类型。如果 API 期望的是int,那么你需要传入int类型的值。
- 确保你调用的 API 或函数期望的参数类型是
-
更新
uni-app和uts版本:- 如果你使用的是较旧版本的
uni-app或uts,可能存在一些已知的 Bug。尝试更新到最新版本,看看问题是否得到解决。
- 如果你使用的是较旧版本的
-
使用
any类型:- 如果以上方法都无法解决问题,你可以暂时使用
any类型来绕过类型检查,但这并不是一个推荐的解决方案。
let num: any = 42; // 使用 any 类型绕过类型检查 - 如果以上方法都无法解决问题,你可以暂时使用
-
检查编译配置:
- 确保你的
tsconfig.json或其他编译配置文件中没有对类型进行不正确的限制或转换。
- 确保你的
示例代码:
// 显式指定为 Number 类型
let num1: Number = 42;
// 使用 Number() 构造函数进行转换
let num2: Number = Number(42);
// 使用 any 类型绕过类型检查
let num3: any = 42;

