Typescript学习笔记(9)-泛型
泛型
什么是泛型
- 泛型简单来说就是
不确定的类型变量
可以在保证类型安全
前提下,让函数等与多种类型一起工作
,从而实现复用
,常用于:函数
、接口
、class
中。,在ts
中存在类型,如number、string、boolean
等。泛型就是使用一个类型变量来表示一种类型,类型值通常是在使用的时候才会设置。泛型的使用场景非常多,可以在函数
、类
、interface接口
中使用
使用泛型
的场景
- 当我们定义一个函数或类时,某些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用。
- 当然解决问题的方法不止一个,我们也可以使用
any
来定义变量类型,但是我们都知道,使用any
定义时是存在一些问题的:虽然以知道传入值的类型但是无法获取函数返回值的类型;另外也失去了ts类型保护的优势
- 这时我们就可以使用
泛型
来定义变量
泛型
的基本使用
1. 在函数
中使用泛型
// 1.在函数中使用泛型 |
- 使用方式类似于
函数传参
,传什么数据类型,T就表示什么数据类型, 使用表示,T也可以换成任意字符串。
2. 在接口
中使用泛型
// 2.在接口中使用泛型 |
3. 在类
中使用泛型
// 3.在类中使用泛型 |
4. 在数组中使用泛型
// 4.数组中使用泛型 |
泛型工具类型
TS
内置了一些常用的工具类型
,来简化TS
中的一些常见操作。它们都是基于泛型实现的(泛型适用于多种类型,更加通用),并且是内置的,可以直接在代码中使用。 这些工具类型有很多,主要学习以下几个:
1. Partial
Partial<type>
: 用来构造(创建)一个类型,将Type
的所有属性设置为可选。
// 1.Partial<type> |
2. Record
Record<keys,type>
: 构造一个对象类型,属性键为Keys
,属性类型为Type
。Record
工具类型有两个类型变量:1 表示对象有哪些属性 2 表示对象属性的类型。
// 2.Record<Keys, Type> |
3. Pick
Pick<Type, Keys>
从Type
中选择一组属性来构造新类型。- Pick 工具类型有两个类型变量:1 表示选择谁的属性 2 表示选择哪几个属性。
- 其中第二个类型变量,如果只选择一个则只传入该属性名即可。
- 创造出来的
新类型变量传入的属性
只能是模板类型变量中存在的属性
。(简单点说就是你只能拿他有的
)
// 3.Pick<Type, Keys> |
4. readonly
Readonly<Type>
:用来构造一个类型,将Type
的所有属性都设置为readonly
(只读)
// 4.readonly<Type> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库