From 1b8c619fccc93bf047b7ea5c597e905e66e8a670 Mon Sep 17 00:00:00 2001 From: lizhongyi Date: Fri, 11 Aug 2023 15:42:12 +0800 Subject: [PATCH] update data-type.md --- docs/plugin/uts-for-ios.md | 2 +- docs/uts/buildin-object-api/array.md | 2 + docs/uts/control.md | 4 ++ docs/uts/data-type.md | 66 +++++++++++++++++++++++++--- docs/uts/literal.md | 2 +- 5 files changed, 69 insertions(+), 7 deletions(-) diff --git a/docs/plugin/uts-for-ios.md b/docs/plugin/uts-for-ios.md index 01ca8c440..90a2e387c 100644 --- a/docs/plugin/uts-for-ios.md +++ b/docs/plugin/uts-for-ios.md @@ -621,7 +621,7 @@ async function testAsync(opts: AsyncOptions) { **需要注意:使用 async 定义异步方法只有 iOS 13+ 版本才支持,低版本调用会报错** -#### 5.1.14 try catch +#### 5.1.14 try catch @try swift中try有以下三种方式: diff --git a/docs/uts/buildin-object-api/array.md b/docs/uts/buildin-object-api/array.md index f0abc5d2e..9543048b8 100644 --- a/docs/uts/buildin-object-api/array.md +++ b/docs/uts/buildin-object-api/array.md @@ -568,6 +568,8 @@ fruits.forEach(function(item, index, array) { // Apple 0 // Banana 1 ``` +- 注意:数组遍历不推荐使用 for in 语句,因为在 ts 中 for in 遍历的是数组的下标,而在 Swift 和 Kottlin 中遍历的是数组的元素,存在行为不一致。 + - 添加元素到数组的末尾 ```ts const newLength = fruits.push('Orange') diff --git a/docs/uts/control.md b/docs/uts/control.md index 482cdbacd..acc15d0ed 100644 --- a/docs/uts/control.md +++ b/docs/uts/control.md @@ -148,6 +148,8 @@ for (let i = 0; i < 10; i++) { - [数组的forEach](buildin-object-api/array.md#foreach) - [set的forEach](buildin-object-api/set.html#foreach) +- 注意:数组遍历不推荐使用 for in 语句,因为在 ts 中 for in 遍历的是数组的下标,而在 Swift 和 Kottlin 中遍历的是数组的元素,存在行为不一致。 + ### while 一个 while 语句只要指定的条件求值为真(true)就会一直执行它的语句块。一个 while 语句看起来像这样: @@ -273,3 +275,5 @@ try { } ``` + +- 注意:在 iOS 平台由于 Swift 的特殊语法,无法直接使用 try...catch, 在 iOS 平台上使用 try 的语法[详见](https://uniapp.dcloud.net.cn/plugin/uts-for-ios.html#try) diff --git a/docs/uts/data-type.md b/docs/uts/data-type.md index 06003b8bc..ab38e5dbc 100644 --- a/docs/uts/data-type.md +++ b/docs/uts/data-type.md @@ -417,11 +417,12 @@ let kotlinArray = utsArr.toTypedArray() ``` -##### swift专有数组类型 +##### iOS 平台专有数组类型 + UTS 中的 Array 对应到 Swift 中就是 Array, 方法是通用的,无需转换。一般情况下,使用 Array 即可。 + 但是,某些系统或者三方库 API 可能会要求 OC 的 NSArray、NSMutableArray 类型的数组,这个时候就需要进行转换。 + - 专有数组类型清单 - UTS 中的 Array 对应到 Swift 中就是 Array, 方法是通用的。一般情况下,使用 Array 即可。 - 但是,某些系统或者三方库 API 可能会要求 NSArray、NSMutableArray 类型的数组,这个时候就需要进行转换。 * NSArray * NSMutableArray @@ -516,6 +517,63 @@ let a3: NSMutableArray = NSMutableArray(array= a) 更多Array的API,[详见](https://uniapp.dcloud.net.cn/uts/buildin-object-api/array.html) +### json类型 @json + +json 在 web 中是一个 object,不存在 json 这个基础类型。在 uts 中提供了内置的 UTSJSONObject 对象。 + + +#### 定义 UTSJSONObject + +可以通过 object 字面量的方式定义一个 UTSJSONObject 对象 + +```ts +let rect = { + x: 20, + y: 12, + size: { + width: 80, + height: 80 + } +} +console.log(rect) +``` + +当然,也可以在 object 字面量前指定 UTSJSONObject 类型, 例如: + +```ts +let origin: UTSJSONObject = { + x: 20, + y: 12, +} +``` + +有关定义 UTSJSONObject 对象的更多信息[详见](uts/literal.md#object) + + +#### 访问 UTSJSONObject 对象中的属性 + +以上述 rect 为例,我们可以通过下标的方式访问其中的属性: + + +```ts +let rect = { + x: 20, + y: 12, + size: { + width: 80, + height: 80 + } +} + +let x = rect["x"] +let size = rect["size"] + +// 如果属性存在嵌套,那么需要先把第一层转成 UTSJSONObject 之后再用下标访问下一层,以此类推。 +let width = (rect["size"] as UTSJSONObject)["width"] + +``` + + ### any类型 @any 有时会遇到在编程阶段还不清楚类型的变量。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 @@ -641,6 +699,4 @@ uts 编译为kotlin和swift时不支持 undefined。即不允许变量未赋值 每个有类型的变量都需要初始化或赋值。 -- json -json 在 web 中是一个 object,不存在 json 这个基础类型。在 uts 中提供了内置的 UTSJSONObject 对象,[详见](buildin-object-api/json.md) diff --git a/docs/uts/literal.md b/docs/uts/literal.md index db882a6e7..b53c87e29 100644 --- a/docs/uts/literal.md +++ b/docs/uts/literal.md @@ -92,7 +92,7 @@ Boolean字面量的自动类型推导简单而统一,全平台必然被自动 数字字面量的类型推导,[详见](data-type.md#@autotypefornumber) -### 字符串字面量 +### 字符串字面量 @object 字符串字面量是由双引号(")对或单引号(')括起来的零个或多个字符。字符串被限定在同种引号之间;也即,必须是成对单引号或成对双引号。下面的例子都是字符串字面值: -- GitLab