Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
enjoyphenix
unidocs-zh
提交
b66a3ec1
unidocs-zh
项目概览
enjoyphenix
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b66a3ec1
编写于
8月 31, 2023
作者:
lizhongyi_
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://gitcode.net/dcloud/unidocs-zh
上级
dc7cb06b
c1f7b65b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
84 addition
and
2 deletion
+84
-2
docs/uts/_sidebar.md
docs/uts/_sidebar.md
+1
-0
docs/uts/generics.md
docs/uts/generics.md
+81
-0
docs/uts/operator.md
docs/uts/operator.md
+2
-2
未找到文件。
docs/uts/_sidebar.md
浏览文件 @
b66a3ec1
...
...
@@ -9,6 +9,7 @@
*
[
类class
](
class.md
)
*
[
接口interface
](
interface.md
)
*
[
类型兼容性
](
type-compatibility.md
)
*
[
泛型
](
./generics.md
)
*
[
模块module
](
module.md
)
*
内置对象和 API
*
[
Number
](
buildin-object-api/number.md
)
...
...
docs/uts/generics.md
0 → 100644
浏览文件 @
b66a3ec1
# 泛型(Generics)
UTS 支持泛型(Generics)特性,允许您编写更通用、可重用的代码,同时提高类型安全性。
## 定义泛型
泛型使用尖括号
`<>`
声明一个或多个泛型参数。
## 泛型函数
泛型函数的泛型参数定义在函数参数的圆括号之前。
```
ts
function
test
<
T
>
(
arg
:
T
):
T
{
return
arg
}
const
str
:
string
=
test
<
string
>
(
'
a
'
)
const
num
:
number
=
test
<
number
>
(
1
)
```
## 泛型类
泛型类的泛型参数定义在类名之后。
```
ts
class
Test
<
T
>
{
value
:
T
constructor
(
value
:
T
)
{
this
.
value
=
value
}
}
const
test1
:
Test
<
string
>
=
new
Test
<
string
>
(
'
a
'
)
const
str1
:
string
=
test1
.
value
const
test2
:
Test
<
number
>
=
new
Test
<
number
>
(
1
)
const
num1
:
number
=
test2
.
value
```
## 泛型接口
泛型接口与泛型类相似,泛型参数定义在接口名之后。
```
ts
interface
ITest
<
T
>
{
value
:
T
}
class
TestImpl
<
T
>
implements
ITest
<
T
>
{
value
:
T
}
```
## 泛型推断
当泛型参数类型与函数的参数类型相关时,泛型参数能够根据函数参数类型自动推断,此时可以省略泛型参数。
```
ts
const
str1
=
test
<
string
>
(
'
a
'
)
const
str2
=
test
(
'
a
'
)
```
## 泛型约束
可以使用
`extends`
关键字来限制泛型参数的类型范围。
```
ts
function
testArray
<
T
extends
Array
<
string
>>
(
arg
:
T
):
T
{
return
arg
}
```
使用其他泛型类型时,如果不需要限制泛型参数的类型可以使用
`unknown`
关键字表示。
```
ts
function
testArray
<
T
extends
Array
<
unknown
>>
(
arg
:
T
):
T
{
return
arg
}
```
docs/uts/operator.md
浏览文件 @
b66a3ec1
...
...
@@ -469,11 +469,11 @@ function fn(obj: any) {
}
```
包含
泛型的类型,不能缺省泛型信息。如不需要判断具体的泛型类型,可以使用
`*
`
表示任意泛型类型:
包含
[
泛型
](
./generics.md
)
的类型,不能缺省泛型信息。如不需要判断具体的泛型类型,可以使用
`unknown
`
表示任意泛型类型:
```
ts
function
fn
(
obj
:
any
)
{
if
(
obj
instanceof
Map
<
*
,
*
>
)
{
if
(
obj
instanceof
Map
<
unknown
,
unknown
>
)
{
// ...
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录