Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
0adbddce
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
0adbddce
编写于
4月 04, 2024
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更uts文档
上级
92a79cbb
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
23 addition
and
13 deletion
+23
-13
docs/uts/README.md
docs/uts/README.md
+3
-5
docs/uts/buildin-object-api/promise.md
docs/uts/buildin-object-api/promise.md
+2
-1
docs/uts/data-type.md
docs/uts/data-type.md
+6
-4
docs/uts/function.md
docs/uts/function.md
+1
-1
docs/uts/operator.md
docs/uts/operator.md
+11
-2
未找到文件。
docs/uts/README.md
浏览文件 @
0adbddce
...
...
@@ -28,14 +28,12 @@ uts这门语言,有2个用途:
1.
开发uni-app 和 uni-app x 的原生扩展插件:因为uts可以调用所有原生能力。
2.
uts和uvue一起组合,开发原生级的项目,也就是 uni-app x 项目
从HBuilderX 3.9起,支持uni-app x项目。
uni-app x 开发App时,输出的是纯原生的App(Android上就是kotlin的app),里面没有js引擎和webview。详见
[
uni-app x
](
../readme.md
)
从HBuilderX 3.9起,支持uni-app x项目。详见
[
uni-app x
](
../readme.md
)
也就是说,uts可以在uni-app中使用,也可以在uni-app x中使用。
-
在uni-app中,主编程语言是js。uts可以开发原生插件,包括API插件和组件插件。
-
在uni-app x中,主编程语言是uts。不管是应用逻辑还是扩展插件,均使用uts编程
,没有
js。
-
在uni-app x中,主编程语言是uts。不管是应用逻辑还是扩展插件,均使用uts编程
。仅在Web平台和iOS的js驱动模式下可以使用
js。
如果插件作者,开发了uts插件,也可以同时在uni-app和uni-app x中使用。比如这2个uts插件:
-
电量:
[
https://ext.dcloud.net.cn/plugin?id=9295
](
https://ext.dcloud.net.cn/plugin?id=9295
)
...
...
@@ -145,7 +143,7 @@ vue 选项式开发时,冒号被用于赋值,无法通过let、const和冒
</script>
```
上述示例仅在 uni-app x 的uvue页面生效。
uni-app
js引擎版,不支持在页面里写uts代码,只支持在uts插件里写uts代码。
上述示例仅在 uni-app x 的uvue页面生效。
老版uni-app,即
js引擎版,不支持在页面里写uts代码,只支持在uts插件里写uts代码。
### 类型自动推导
...
...
docs/uts/buildin-object-api/promise.md
浏览文件 @
0adbddce
# Promise
Promise 对象表示异步操作最终的完成(或失败)以及其结果值。
仅 HBuilderX 3.9+ 安卓平台支持。
Promise 对象表示异步操作最终的完成(或失败)以及其结果值。
### Constructor(fn)
...
...
@@ -220,3 +220,4 @@ Promise 对象表示异步操作最终的完成(或失败)以及其结果值
## Bug & Tips@tips
*
目前 Promise 类型编译到 kotlin 为 io.dcloud.uts.UTSPromise
*
编译到swift时暂不支持。但在uvue里因为iOS默认js驱动所以可以使用Promise
\ No newline at end of file
docs/uts/data-type.md
浏览文件 @
0adbddce
# 类型@data-type
强类型语言的特点,是数据类型要求严格。它带来2个好处:
1.
高性能:明确的类型有更大的优化空间,在
iOS和
Android等OS上可以节省内存、提高运算速度;web端由于仍编译为js,不具有类型性能优化。
1.
高性能:明确的类型有更大的优化空间,在Android等OS上可以节省内存、提高运算速度;web端由于仍编译为js,不具有类型性能优化。
2.
安全的代码:强类型代码编写虽然没有弱类型自由,但类型检查、非空检查...等各种检查可以提高代码的健壮性。
如果您是js开发者,那么需要一定的学习过程来掌握 UTS 的类型系统。总体原则是你将牺牲一些代码的灵活性,来换取代码的健壮性和高性能。
...
...
@@ -1710,6 +1710,8 @@ HBuilderX 3.9起内置了一个json转type工具,在`json编辑器`中选择
注意json数据的属性名称需要引号包围。
如果找不到这个右键菜单,检查是否是右下角是否显示JSON编辑器;检查是否安装了uts/uni-app x相关插件,一般真机运行时会自动安装相关插件。
### 为vue的data中的json定义类型
uvue文件中data中的json数据也涉及类型定义。此时注意:type定义必须放在
`export default {}`
前面。
...
...
@@ -1776,7 +1778,7 @@ console.log(obj.age) //25
js中的 undefined类型表示变量被定义,但是未赋值或初始化。
uts 仅在编译为js时支持 undefined,在编译为kotlin和swift时不支持 undefined。即A
pp
平台不允许变量未赋值。每个有类型的变量都需要初始化或赋值。
uts 仅在编译为js时支持 undefined,在编译为kotlin和swift时不支持 undefined。即A
ndroid
平台不允许变量未赋值。每个有类型的变量都需要初始化或赋值。
考虑多端,应避免使用undefined。
...
...
@@ -1835,7 +1837,7 @@ HBuilder支持给变量定义特殊值域string类型,这些类型在HBuilder
-
支持
[
|null
](
#null
)
(即可为空)
-
[
字面量联合类型
](
#literal-union-type
)
App平台
不支持其他方式的联合类型。
编译为非js时,
不支持其他方式的联合类型。
在编译为js时开发者可以使用其他联合类型。但考虑到多端兼容,应尽量避免。
...
...
@@ -1849,4 +1851,4 @@ uts内置的类型,包括浏览器、Android、iOS内置的类型,在编译
**注意**
-
web端
联合类型等复杂类型在编译后会被擦除
-
编译到js时
联合类型等复杂类型在编译后会被擦除
docs/uts/function.md
浏览文件 @
0adbddce
...
...
@@ -346,4 +346,4 @@ fn('a', 'b', 'c') // 'a' ['b', 'c']
fn
(
'
a
'
,
...[
'
b
'
,
'
c
'
])
// 'a' ['b', 'c']
```
注意:在app平台,uvue 页面的 methods 中定义的方法不支持剩余参数。
注意:在app
-android
平台,uvue 页面的 methods 中定义的方法不支持剩余参数。
docs/uts/operator.md
浏览文件 @
0adbddce
...
...
@@ -175,7 +175,7 @@ const status = age >= 18 ? "adult" : "minor";
-
`>>=`
*
右移赋值运算符 (>>=) 将变量向右移动指定数量的位,并将结果赋值给变量。
-
`===`
*
当两边操作数指向同一个对象时,引用相等 (===) 运算符返回true。
对于运行时表示为原生类型的值(例如 Int),引用相等 (===)等价于相等(==)。
*
当两边操作数指向同一个对象时,引用相等 (===) 运算符返回true。
不同平台有差距,
[
见下
](
#completeComparison
)
-
`!==`
*
当两边操作数不指向同一个对象时,引用不等 (!==) 运算符返回true。
-
`-`
...
...
@@ -277,6 +277,15 @@ uts 中比较运算符在大部分场景下和 ts 中的行为一致,但是在
| Array == Array (!= 行为相同) | [1] == [1] | 结果为 false |结果为 true,数组类型相同,元素相同就为true |
| Array === Array (!=== 行为相同) | [1] === [1] | 结果为 false |编译失败,不能比较 |
`===`
和
`!==`
,本意是内存地址相同,即不仅值相同,并且是同一份对象。
但不同平台的逻辑略有差异:
-
js中可以比较基础类型。swift中不可以比较基础类型,只能比较对象类型
-
js中比较相同字面量会返回true,比如1===1。但kotlin由于编译优化,可能会把两个字面量映射为同一内存地址,但也可能没有触发编译优化。如果没有优化为同一内存地址,那么kotlin上1===1就会返回false。而swift不允许比较字面量。
对于运行时表示为原生类型的值(例如 Int),引用相等 (===)等价于相等(==)。
<!-- TODO @yanyilin -->
## 展开语法...
> HBuilderX 3.9+
...
...
@@ -549,7 +558,7 @@ b instanceof Int //true
> 3.93+ (Android)
await 操作符用于等待一个
[
Promise
](
./buildin-object-api/promise.md
)
兑现并获取它兑现之后的值。它只能在
[
异步函数
](
./function.md#async
)
中使用。
在 HBuilderX 3.93 以下的版本或者
iOS 平台
,await 不能与
[
Promise
](
./buildin-object-api/promise.md
)
一同使用,此时请分别参考:
[
安卓 异步函数
](
https://uniapp.dcloud.net.cn/plugin/uts-for-android.html#_6-11-synchronized-lock-等线程同步概念-在uts里怎么写
)
、
[
iOS 异步函数
](
https://uniapp.dcloud.net.cn/plugin/uts-for-ios.html#_5-1-13-异步方法
)
。
在 HBuilderX 3.93 以下的版本或者
编译为swift时
,await 不能与
[
Promise
](
./buildin-object-api/promise.md
)
一同使用,此时请分别参考:
[
安卓 异步函数
](
https://uniapp.dcloud.net.cn/plugin/uts-for-android.html#_6-11-synchronized-lock-等线程同步概念-在uts里怎么写
)
、
[
iOS 异步函数
](
https://uniapp.dcloud.net.cn/plugin/uts-for-ios.html#_5-1-13-异步方法
)
。
```
ts
async
function
test
():
Promise
<
string
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录