Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
ebc42f7d
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看板
提交
ebc42f7d
编写于
10月 14, 2024
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
831b2881
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
67 addition
and
0 deletion
+67
-0
docs/uts/README.md
docs/uts/README.md
+67
-0
未找到文件。
docs/uts/README.md
浏览文件 @
ebc42f7d
...
@@ -208,6 +208,8 @@ vue 选项式开发时,冒号被用于赋值,无法通过let、const和冒
...
@@ -208,6 +208,8 @@ vue 选项式开发时,冒号被用于赋值,无法通过let、const和冒
### 类型自动推导
### 类型自动推导
#### 字面量推导
现代语言(ts、kotlin、swift),都具备自动识别
[
字面量
](
literal.md
)
,进行类型推导的功能。
现代语言(ts、kotlin、swift),都具备自动识别
[
字面量
](
literal.md
)
,进行类型推导的功能。
即:如果开发者声明变量的同时,进行了初始化赋值。那么编译器可以根据赋值的
[
字面量
](
literal.md
)
,自动推导出变量类型,不必开发者显式声明。
即:如果开发者声明变量的同时,进行了初始化赋值。那么编译器可以根据赋值的
[
字面量
](
literal.md
)
,自动推导出变量类型,不必开发者显式声明。
...
@@ -247,6 +249,71 @@ HBuilderX 3.9+, uts 统一了字面量自动类型推导。
...
@@ -247,6 +249,71 @@ HBuilderX 3.9+, uts 统一了字面量自动类型推导。
建议插件作者,除了boolean和string外,其他包括数字和数组在内的类型,尽量不使用字面量自动类型推导,而是显式声明类型。避免 uts 统一自动类型推导时引发的向下兼容问题。
建议插件作者,除了boolean和string外,其他包括数字和数组在内的类型,尽量不使用字面量自动类型推导,而是显式声明类型。避免 uts 统一自动类型推导时引发的向下兼容问题。
在 HBuilderX 4.31 以前,对象字面量{}的推导,默认是UTSJSONObject,无论是变量声明,还是传参(除了uni、uniCloud等官方API)等场景,只要没有手动 as,均会推导为 UTSJSONObject 类型。
HBuilderX 4.31+,uts 增强了对象字面量的类型推导,会根据当前上下文,来推断是否是某个type定义的类型(如果type是定义在非当前文件,需要该type对外导出)
```
ts
type
User
=
{
name
:
string
age
:
number
}
function
printUser
(
user
:
User
){
console
.
log
(
user
)
}
printUser
({
name
:
'
zhangsan
'
,
age
:
12
})
// 从 HBuilderX 4.31+ 起,无需手动 as User
function
createUser
(
name
:
string
,
age
:
number
)
:
User
{
return
{
name
,
age
}
// 从 HBuilderX 4.31+ 起,无需手动 as User
}
printUser
(
createUser
({
name
:
'
zhangsan
'
,
age
:
12
}))
```
#### 函数返回值类型推导
在 HBuilderX 4.31 以前,所有的函数如果有 return 语句,均需要主动声明返回值类型。
HBuilderX 4.31+,uts 增强了函数返回值类型的推导,会根据当前上下文,来自动推断补充当前函数的返回值类型
```
ts
function
test1
()
{
// 自动推导返回值类型为 string
return
"
test1
"
}
function
test2
(
arg
:
boolean
)
{
// 自动推导返回值类型为 number | null
if
(
arg
)
{
return
1
}
return
null
}
function
test3
(
arg
:
boolean
):
any
{
// 暂不支持多个不同类型的返回值推导,需要主动声明为 any
if
(
arg
)
{
return
1
}
return
"
test2
"
}
```
注意:目前函数返回值仅推导相同类型,或可为空类型,不支持多个类型的推导,比如 test3 函数,可能返回 string | number,此时需要主动声明为 any 类型。
#### 函数参数推导
在 HBuilderX 4.31 以前,函数赋值或作为参数时,当前函数的参数数量必须和目标函数保持一致。
HBuilderX 4.31+,uts 增强了函数参数数量的自动推导
```
ts
type
TestFn
=
(
a1
:
string
,
a2
:
string
)
=>
void
function
callTestFn
(
test
:
TestFn
)
{
test
(
'
1
'
,
'
2
'
)
}
// HBuilderX 4.31 以前仅支持传递两个参数的函数
callTestFn
((
arg1
,
arg2
)
=>
{})
// HBuilderX 4.31+支持以下调用方式
callTestFn
(()
=>
{})
callTestFn
((
arg1
)
=>
{})
```
### 类型判断
### 类型判断
判断类型,有好几种方案:
[
typeof
](
operator.md#typeof
)
、
[
instanceof
](
operator.md#instanceof
)
、
[
isArray
](
buildin-object-api/array.md#isarray
)
。
判断类型,有好几种方案:
[
typeof
](
operator.md#typeof
)
、
[
instanceof
](
operator.md#instanceof
)
、
[
isArray
](
buildin-object-api/array.md#isarray
)
。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录