uni-app 【报Bug】uts 自定义类型 type 时参数名字竟然不区分大小写

发布于 1周前 作者 phonegap100 来自 Uni-App

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

debug-unix.zip


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(小写)也被认为是合法的。

可能的原因

  1. 编译器行为uts 编译器可能在进行类型检查时,对属性名进行了大小写不敏感的匹配。
  2. 运行时行为:在运行时,uts 可能将对象属性名统一转换为小写或大写,导致不区分大小写。

解决方法

  1. 检查编译器版本:确保使用的是最新版本的 uni-apputs 编译器,可能存在已知的 bug 并已在最新版本中修复。
  2. 严格遵循定义:在定义和使用类型时,严格遵循大小写的定义,确保属性名完全匹配。
  3. 反馈给官方:如果确认是 uts 的问题,可以将问题反馈给 uni-app 官方团队,等待官方的修复。

示例代码

以下是一个严格的类型定义和使用示例:

type MyType = {
    Name: string;
    Age: number;
};

let obj: MyType = {
    Name: "John",  // 严格使用大写的 'Name'
    Age: 30        // 严格使用大写的 'Age'
};
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!