uts,全称unitypescript,是一门跨平台的、高性能的、强类型的现代编程语言。
它可以被编译为不同平台的编程语言,如:
uts采用了与ts基本一致的语法规范,支持绝大部分ES6API。
但为了跨端,uts进行了一些约束和特定平台的增补。
过去在js引擎下运行支持的语法,大部分在uts的处理下也可以平滑的在kotlin和swift中使用。但有一些无法抹平,需要使用条件编译。和uni-app的条件编译类似,uts也支持条件编译。写在条件编译里的,可以调用平台特有的扩展语法。
uts是一门语言。也仅是一门语言,不包含ui框架。
uvue是DCloud提供的跨平台的、基于vue语法的ui框架。
uts相当于js,uvue相当于html和css。它们类似于v8和webkit的关系、类似于dart和flutter的关系。
uts这门语言,有2个用途:
从HBuilderX3.9起,支持uni-appx项目。
也就是说,uts可以在uni-app中使用,也可以在uni-appx中使用。
如果插件作者,开发了uts插件,也可以同时在uni-app和uni-appx中使用。比如这2个uts插件:
这2个uts插件,一个是api插件,一个是组件插件,它们同时兼容uni-app和uni-appx。
本文是uts的基本语法介绍。
js是无类型的,TypeScript的type就是类型的意思,给js加上了类型。它的类型定义方式是在变量名后面通过加冒号和类型来进行定义。
相当于TypeScript中的let、kotlin中的var、swift中的var。
相当于TypeScript中的const、kotlin中的val、swift中的let。
在uts中,使用变量名需要遵守一定的规则。
注意:与TypeScript不同的是,uts不允许以$开头命名变量
方法的参数、返回值,也通过冒号定义。
如下示例,方法test,有一个参数score,是number类型,方法返回值类型为boolean类型。
functiontest(score:number):boolean{return(score>=60)}test(61)//返回true方法无返回值时,使用:void。
vue选项式开发时,冒号被用于赋值,无法通过let、const和冒号来定义data数据的类型。
如下2种写法都是合法的,两个变量都是string类型:
//以下每组写法是等价的lets1="hello"//根据字面量"hello",自动推导为string类型lets2:string="hello"lets3:strings3="hello"letb1=true//根据字面量true,自动推导为boolean类型letb2:boolean=true//以上为字符串和布尔的字面量类型自动推导,数字和数组也支持字面量类型推导,但规则比较复杂,需另见文档在HBuilderX3.9以前,uts未对字面量赋值类型推导做统一处理,编译到kotlin和swift时,由这2个语言自行做类型推导。
使用typeof可以判断布尔值、数字、字符串、函数。
typeof(true)=="boolean"typeof("abc")=="string"letn1:number=1typeof(n1)=="number"但如果使用typeof验证数组,会发现返回的类型值是"object",这与浏览器是相同的逻辑。
如果想验证数组类型,需要使用如下方法:
consta1=["uni-app","uniCloud","HBuilder"]console.log(Array.isArray(a1))//返回trueconsole.log(a1instanceofArray)//返回trueinstanceof,除了验证数组,还可以验证类型,但注意它返回的不是具体类型,还是根据入参的一个boolean值。
js没有类型检查。而uts和ts都有严格的类型检查。
对于可为null的类型,调用时需要加问号,否则编译器会报错。
uts的多个代码语句,以回车或分号分割。
多行时行尾的分号可以省略。如果写在一行,应以分号分割。