软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
使用泛型
来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。
在ts中,如果要使用泛型,首先需要定义一个占位符,占位符的名字任意
function fn<T>(a: T, b: T): Array<T> {
return [a, b]
}
fn(1, 2) // number 类型
fn(false, true) // boolean类型
这里,我们为函数构造了一个泛型,参数和返回值都为泛型
那么当我们向函数传递参数时,泛型 T 就会自动被推断为传递的参数的类型
先构造type的泛型T,在下面使用type时,传入boolean,其泛型变为布尔类型
type A<T> = string | number | T
let a:A<boolean> = true
interface Data<T> {
msg: T
}
let data: Data<number> = {
msg: 1
}
ts还支持使用多个泛型
function printer<T, K>(a: T, b: K): Array<T | K> {
return [a. b]
}
printer(1, false )
用于控制泛型类型的范围
function add<T extends number>(a:T, b:T) {
return a + b;
}
这里,泛型的类型范围为number