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 时参数名字不区分大小写,演示项目见附件,截图如下:

更多关于uni-app 【报Bug】uts 自定义类型 type 时参数名字竟然不区分大小写的实战教程也可以访问 https://www.itying.com/category-93-b0.html
        
          3 回复
        
      
      
        感谢反馈,内部已知问题,预计4.0版本会修复,可以先换个名称绕过一下
更多关于uni-app 【报Bug】uts 自定义类型 type 时参数名字竟然不区分大小写的实战教程也可以访问 https://www.itying.com/category-93-b0.html
好的,目前就是这么做的
在 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'
}; 
        
       
                     
                   
                    

