uniappx语法差异汇总(附详细示例)

 更新时间:2025年06月14日 11:22:14   作者:darly  
uni-app x是下一代uni-app,一个神奇的产品,用vue语法、uni的组件、api,以及uts语言,编译出了kotlin的app,这篇文章主要介绍了uniappx语法差异的相关资料,需要的朋友可以参考下

前言

最近在做一个uniappx开发Android、iOS、微信小程序的项目,开发过程中遇到很多报错。其中语法报错占据大多数,下面是语法报错解决之后的汇总

  • 所有变量都要声明类型;
  • 对象的类型声明不能嵌套,原因未知;
  • 部分 JS 语法不支持;
  • 不同平台对编写语法要求不同,所以调试时应该同时运行Android和iOS及时发现报错。

不支持的 JS/TS 语法

// 1.解构

const { a, b } = response.data; // 不支持
const data = {...response.data, ...other} // 不支持
// 2.对象的变量取值
const a = "a"; 
const obj = {
  a() {
    return "test";
  },
};
obj[a](); // 不支持

// 3. 函数返回Promise时同时有resolve和reject会有类型推断问题。
const promiseExample = (param: booleam) => { // 会报错,暂未找到解决办法,只能全部使用Promise.reslove
	if(param) {
		return Promise.reslove("")
	} else {
		return Promise.reject(new Error())
	}
}
// 4. 不支持短路操作
const str = other || "get" //错误用法,str在APP上为 false

let str: string; // 正确用法:显式的为变量赋值
if(typeof other === "string") {
	str === other
} else {
	str === "get"
}
// 5. 没有隐式类型转换

const a = ""
if(a) { // 错误用法,会报类型错误
	// handles
}
if(typeof a === "string") { // 正确用法1
	// handles
}
if(a === "") {// 正确用法2
	// handles
}

// 6. 对象未定义属性值引用

const config = {
	a: "a"
}
fun(config.g) // Unresolved reference: g
// 7. 为对象的可选属性的属性赋值
	interface MyObject {
		optionalProp?: {
			nestedProp: string;
		};
	}
	const obj: MyObject = {
		// ...
	}
	// 为可选属性的属性赋值包含两步,分别是逻辑判断是否为空和类型断言
		if (typeof obj.optionalProp === "object") {
			obj.optionalProp!.nestedProp = "1234"
		}
// 8. Promise.all()的返回值不能确定类型,所以要显式的处理一次
 Promise.all(dataList.map(handles as Promise<string>))// 返回类型为Promise<unknow[]>,需要在.then的成功回调里return类型明确的值
 .then((res : string[]) => res.join(","))

总结

到此这篇关于uniappx语法差异汇总的文章就介绍到这了,更多相关uniappx语法差异内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Antd-Select组件的用法

    深入理解Antd-Select组件的用法

    这篇文章主要介绍了深入理解Antd-Select组件的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Electron应用显示隐藏时展示动画效果实例

    Electron应用显示隐藏时展示动画效果实例

    最近使用electron实现一个简单的功能,下面这篇文章主要给大家介绍了关于Electron应用显示隐藏时展示动画效果的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 如何使用proxy实现一个简单完整的MVVM库的示例代码

    如何使用proxy实现一个简单完整的MVVM库的示例代码

    这篇文章主要介绍了如何使用proxy实现一个简单完整的MVVM库的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 手把手教你实现一个JavaScript时间轴组件

    手把手教你实现一个JavaScript时间轴组件

    本文主要是给大家带来一个时间轴的组件开发教程,其主要功能就是可以拖动时间轴来定位当前时间,可以通过鼠标滚轮来修改当前时间分辨率,需要的可以参考一下
    2022-10-10
  • 关于微信小程序使用echarts/数据刷新重新渲染/图层遮挡问题

    关于微信小程序使用echarts/数据刷新重新渲染/图层遮挡问题

    这篇文章主要介绍了微信小程序使用echarts/数据刷新重新渲染/图层遮挡问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 小程序实现手写板签名

    小程序实现手写板签名

    这篇文章主要为大家详细介绍了小程序实现手写板签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • js获取元素下的第一级子元素的方法(推荐)

    js获取元素下的第一级子元素的方法(推荐)

    下面小编就为大家带来一篇js获取元素下的第一级子元素的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 一文带你深入理解JavaScript模板引擎

    一文带你深入理解JavaScript模板引擎

    在Web前端开发中,需要将数据动态渲染到页面上,随着应用程序的复杂度增加,数据渲染的逻辑也变得越来越复杂,这时候就需要使用模板引擎来帮助我们动态生成HTML标记,本文将深入介绍 JavaScript 模板引擎,帮助读者更好地理解和应用模板引擎
    2023-06-06
  • JavaScript中的FileReader示例详解

    JavaScript中的FileReader示例详解

    FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件,这篇文章主要给大家介绍了关于JavaScript中FileReader的相关资料,需要的朋友可以参考下
    2022-03-03
  • 用JavaScript和jQuery实现瀑布流

    用JavaScript和jQuery实现瀑布流

    本篇文章主要介绍了用JavaScript和jQuery实现瀑布流的方法,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03

最新评论