- 发布:2024-04-01 10:41
- 更新:2024-04-01 16:56
- 阅读:247
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Win10 22H2
HBuilderX类型: 正式
HBuilderX版本号: 4.07
手机系统: 全部
手机厂商: 华为
页面类型: nvue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
操作步骤:
BUG描述中
BUG描述中
预期结果:
可以正常编辑
可以正常编辑
实际结果:
无法 正常编辑
无法 正常编辑
bug描述:
升级到4.07之后,类型转换语法报错无法 编辑,
let j1: AnyArray=['sdf',3];
let j2=[123,3] as AnyArray;
let j3=['asdf',234] as Array<any>;
所有这样的写法都UTS会报错,TS不会报错。
还有
<script lang="uts">
export default {
data() {
return {
title: 'Hello',
}
},
onLoad() {
}
}
class Test_Class{
TestName:string
}
</script>
还有这样,在Script标签中添加类也会报错。。。TS不会报错
4 个回复
2***@qq.com (作者)
看到的兄弟顶上去。
DCloud_UNI_FengXY
你说的报错,是只在HBuilderX的编辑器里边波浪线飘红,还是运行到真机编译过不去?
2***@qq.com (作者)
真机编译不过去。
2024-04-01 16:21
DCloud_UNI_FengXY
回复 2***@qq.com: 错误信息是什么
2024-04-01 16:25
2***@qq.com (作者)
你建 一个最简单最简单的项目 。。
let dat =[2,23,'234'] as AnyArray;
let dat =[2,23,'234'] as Array<string>;
let dat =['2','23','234'] as string[];
你把这样的代码,写出来,用UTS写,然后你就无法 真机调试了。
2024-04-01 16:55
2***@qq.com (作者)
回复 DCloud_UNI_FengXY:
我在下面把录的视频传上来了。你看下吧。谢谢
2024-04-01 16:56
DCloud_UNI_FengXY
回复 2***@qq.com: 你是从文档看的AnyArray用法,还是谁告诉你的这个?没有这个类型的
2024-04-01 17:00
2***@qq.com (作者)
回复 DCloud_UNI_FengXY:
亲爱的,在IDE里面试一下AnyArray这个就知道了,
你说没有这个那这个就不要,你试一下另外两个,另外两个写法应该没问题吧?依然不行
let dat =[2,23,'234'] as Array<string>;
let dat =['2','23','234'] as string[];
甚至 let bo= 'true' as boolean这样的写法都 不行。
2024-04-02 00:25
DCloud_UNI_FengXY
回复 2***@qq.com: let dat =[2,23,'234'] as Array<string>; 和 let bo= 'true' as boolean; 本来就是不正确的uts写法,以前也不对,你不能把一个混合了数值和字符串的数组,强转成字符串数组,也不能把一个字符串强转成boolean类型,uts是一个强类型语言。
2024-04-02 11:18
DCloud_UNI_FengXY
你 AnyArray 是从哪来的?自己定义的别名?
2***@qq.com (作者)
亲,这怎么是自己定义的别名呢。这是UTS里面的数据类型啊。
你试一下,,正常这样写是没有问题的。
uni.request({
url: "https://test.text.com/j",
data:['Parp1','Parp2'],
success: (d) => {
let dat = d.data['data']['Table'] as AnyArray;
}
})
2024-04-01 16:25
DCloud_UNI_FengXY
回复 2***@qq.com: 你从哪看到的AnyArray这个用法
2024-04-01 16:57
2***@qq.com (作者)
回复 DCloud_UNI_FengXY: 亲啊,你是官方 的技术 人吗?如果是,你就把后面那个AnyArray换成实体的数组,
纠着这个AnyArray不放。
4.07的问题,就是只要用 as 这个关键字进行数据类型转换,就会报错。
获取下来的JSON转换成实体类。总 d.data['data']['Table1'] as ModelClass[]这样叫没有问题吧?这样写总可以了吧?d.data['data']是API访问 下来的JSON,,ModelClass是一个对应的窗体类,只要用as这个关键字进行数据转型转换,就没有办法编译。。。
如果你是官方 的技术人员,麻烦你试一下我说的语法,就是as这个进行任何数据类型转换,都行,你随便 写,都会报错,,
如果你不是官方的技术人员,那你不懂就不用再乱回复我了。那你到底懂不懂?,
我都说了,类型转换就会报错是,下面还有视频说明 。就算你写 let j=2 as number它都要报错,明白 吗?
2024-04-02 13:14
DCloud_UNI_FengXY
回复 2***@qq.com:
第一:是你说3.99可以,4.07不可以,所以我要确认为什么你说3.99 AnyArray可以,而 4.07不可以
第二:所有的uts文档,所有之前的版本,从来没有可以通过as来任意转换类型的用法,可以先看一遍文档:
https://doc.dcloud.net.cn/uni-app-x/tutorial/codegap.html
https://doc.dcloud.net.cn/uni-app-x/uts/
2024-04-02 14:32
DCloud_UNI_FengXY
回复 2***@qq.com: 关于as用法的文档说明:https://doc.dcloud.net.cn/uni-app-x/uts/operator.html#as
2024-04-02 14:39
2***@qq.com (作者)
回复 DCloud_UNI_FengXY:
const a: string = 'a'
a as any // 正确
a as string // 正确
这就是在你们文档里面弄出来的。4.07这个版本,就这样的写法,都无法编辑,明白了没?
我跟你说的不是任意转换类型,,
是任何地方,只要使用as这个来转换,就报错,,,我怎么感觉你是机器 人?我视频也录了。示例也说了,如果你是官方 的人技术人员,你不能试一下?
2024-04-02 16:39
2***@qq.com (作者)
错误 提示在附件的视频中,可以看下
DCloud_UNI_FengXY
你的项目是什么类型的?uni-app vue3 ?,<script lang="uts"> 只支持 uni-app x 项目类型的工程
2024-04-02 14:59
2***@qq.com (作者)
回复 DCloud_UNI_FengXY:
NVUE,
VUE3
4.07之前全部都 是这样的。现在又成了只支持APP X了。
2024-04-02 16:40
2***@qq.com (作者)
4.07前的版本,项目 都 做上线了。。现在升到4.07,整 个项目 无法运行了。
<script lang="uts">
export default {
data() {
return {
title: 'Hello',
Items: uni.getSystemInfoSync().windowHeight.toString()
}
},
onLoad() {
},
methods: {
</script>
这样的写法都会错,必须把下面的类删了才不会错。
只要在下面加了类的申请 ,就不能编译
2024-04-02 16:41
DCloud_UNI_FengXY
回复 2***@qq.com: 把lang="uts"改成lang="ts",非 x 只支持 js 和 ts
2024-04-02 17:01
2***@qq.com (作者)
回复 DCloud_UNI_FengXY:
那意思就是以前的项目 NVUE的全部用的UTS的,必须 改成TS?
2024-04-02 17:31
2***@qq.com (作者)
回复 DCloud_UNI_FengXY:
我去,整 个项目 全部都要改。真是服了。
2024-04-02 17:31
DCloud_UNI_FengXY
回复 2***@qq.com: 你以前写的uts也都是被当成ts,然后编译的时候丢掉类型,非 x 的项目一直没支持过<script lang="uts">
2024-04-02 17:32
2***@qq.com (作者)
好吧不纠结这个问题了。
另外一个问题,IOS的蓝牙打印,总是不规则闪退,多数情况下是因为什么 原因 导致 的呢?
2024-04-02 17:37
DCloud_UNI_FengXY
回复 2***@qq.com: 可以另外提交一个问题,我转给其他同事跟进
2024-04-02 17:40