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 |
3 回复
那个setColumHidden方法的第一个参数,声明需要int。你可以看下是不是那个方法的定义处写错了,如果确定需要int,那就用number的toInt方法转换。
?这个问号代表可为空。这个我们看看能不能兼容下。
在HBuilderX3.99的帮助菜单或控制台报bug,可以更简单的提交复现工程
问题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;