uni-app HBuilder X从3.99升级到4.07后 之前支持的UTS语句现在报异常

uni-app HBuilder X从3.99升级到4.07后 之前支持的UTS语句现在报异常

测试过的手机:

全部手机都一样

操作步骤:

  • 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不会报错


更多关于uni-app HBuilder X从3.99升级到4.07后 之前支持的UTS语句现在报异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

35 回复

看到的兄弟顶上去。

更多关于uni-app HBuilder X从3.99升级到4.07后 之前支持的UTS语句现在报异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你说的报错,是只在HBuilderX的编辑器里边波浪线飘红,还是运行到真机编译过不去?

真机编译不过去。

回复 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写,然后你就无法 真机调试了。

回复 DCloud_UNI_FengXY: 我在下面把录的视频传上来了。你看下吧。谢谢

回复 2***@qq.com: 你是从文档看的AnyArray用法,还是谁告诉你的这个?没有这个类型的

回复 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这样的写法都 不行。

回复 2***@qq.com: let dat =[2,23,‘234’] as Array<string>; 和 let bo= ‘true’ as boolean; 本来就是不正确的uts写法,以前也不对,你不能把一个混合了数值和字符串的数组,强转成字符串数组,也不能把一个字符串强转成boolean类型,uts是一个强类型语言。

你 AnyArray 是从哪来的?自己定义的别名?

亲,这怎么是自己定义的别名呢。这是UTS里面的数据类型啊。 你试一下,,正常这样写是没有问题的。 uni.request({ url: “https://test.text.com/j”, data:[‘Parp1’,‘Parp2’], success: (d) => { let dat = d.data[‘data’][‘Table’] as AnyArray; } })

回复 2***@qq.com: 你从哪看到的AnyArray这个用法

回复 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它都要报错,明白 吗?

回复 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/

回复 2***@qq.com: 关于as用法的文档说明:https://doc.dcloud.net.cn/uni-app-x/uts/operator.html#as

回复 DCloud_UNI_FengXY: const a: string = ‘a’

a as any // 正确 a as string // 正确 这就是在你们文档里面弄出来的。4.07这个版本,就这样的写法,都无法编辑,明白了没? 我跟你说的不是任意转换类型,,

是任何地方,只要使用as这个来转换,就报错,,,我怎么感觉你是机器 人?我视频也录了。示例也说了,如果你是官方 的人技术人员,你不能试一下?

错误 提示在附件的视频中,可以看下

你的项目是什么类型的?uni-app vue3 ?,<script lang="uts"> 只支持 uni-app x 项目类型的工程

回复 DCloud_UNI_FengXY: NVUE, VUE3 4.07之前全部都 是这样的。现在又成了只支持APP X了。

4.07前的版本,项目 都 做上线了。。现在升到4.07,整 个项目 无法运行了。

<script lang="uts"> export default { data() { return { title: 'Hello', Items: uni.getSystemInfoSync().windowHeight.toString() } }, onLoad() { }, methods: {
</script> 这样的写法都会错,必须把下面的类删了才不会错。 只要在下面加了类的申请 ,就不能编译

回复 2***@qq.com: 把lang="uts"改成lang=“ts”,非 x 只支持 js 和 ts

回复 DCloud_UNI_FengXY: 那意思就是以前的项目 NVUE的全部用的UTS的,必须 改成TS?

回复 DCloud_UNI_FengXY: 我去,整 个项目 全部都要改。真是服了。

回复 2***@qq.com: 你以前写的uts也都是被当成ts,然后编译的时候丢掉类型,非 x 的项目一直没支持过<script lang="uts">

好吧不纠结这个问题了。 另外一个问题,IOS的蓝牙打印,总是不规则闪退,多数情况下是因为什么 原因 导致 的呢?

回复 2***@qq.com: 可以另外提交一个问题,我转给其他同事跟进

回到顶部