uni-app 【报Bug】uts 自定义类型 type 时参数名字竟然不区分大小写
uni-app 【报Bug】uts 自定义类型 type 时参数名字竟然不区分大小写
信息类别 | 内容 |
---|---|
产品分类 | uni-app x/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | M1芯片 13.2.1 (22D68) |
HBuilderX版本号 | 3.98 |
手机系统 | Android |
手机系统版本号 | Android 14 |
手机厂商 | 小米 |
手机机型 | 红米 k60 至尊版 |
示例代码:
type Test = {
a: string;
A: string;
};
const str: Test = {
a: '1',
A: '2'
};
console.log(str);
操作步骤:
type Test = {
a: string;
A: string;
};
const str: Test = {
a: '1',
A: '2'
};
console.log(str);
预期结果:
Test 类型的 a 和 A 都可以正常解析
实际结果:
只能解析 a 或者 A
bug描述:
uts 的自定义 type 时参数名字不区分大小写,演示项目见附件,截图如下:
3 回复
感谢反馈,内部已知问题,预计4.0版本会修复,可以先换个名称绕过一下
好的,目前就是这么做的
在 uni-app
中,使用 uts
语言定义自定义类型 type
时,参数名不区分大小写的问题,可能是由于 uts
编译器或运行时环境在处理类型定义时的实现机制导致的。
问题描述
在 uts
中定义自定义类型时,例如:
type MyType = {
Name: string;
age: number;
};
在实际使用时,可能会出现参数名不区分大小写的情况,例如:
let obj: MyType = {
name: "John", // 这里使用了小写的 'name'
age: 30
};
尽管 MyType
中定义的是 Name
(大写),但在实际使用时,name
(小写)也被认为是合法的。
可能的原因
- 编译器行为:
uts
编译器可能在进行类型检查时,对属性名进行了大小写不敏感的匹配。 - 运行时行为:在运行时,
uts
可能将对象属性名统一转换为小写或大写,导致不区分大小写。
解决方法
- 检查编译器版本:确保使用的是最新版本的
uni-app
和uts
编译器,可能存在已知的 bug 并已在最新版本中修复。 - 严格遵循定义:在定义和使用类型时,严格遵循大小写的定义,确保属性名完全匹配。
- 反馈给官方:如果确认是
uts
的问题,可以将问题反馈给uni-app
官方团队,等待官方的修复。
示例代码
以下是一个严格的类型定义和使用示例:
type MyType = {
Name: string;
Age: number;
};
let obj: MyType = {
Name: "John", // 严格使用大写的 'Name'
Age: 30 // 严格使用大写的 'Age'
};