在ts中常常会用接口来定义对象的类型, 用来规定对象中应该存在哪些属性, 这些属性是什么类型, 但是某些情况下, 我不希望对象中属性的类型固定, 而是我传入什么类型, 属性就是什么类型 , 此时就需要使用泛型接口 .
我们先定义一个普通接口
interface objType {
money: (value: number) => number
arr: () => string[]
}
const obj2: objType = {
money: (val) => val,
arr: () => ['1'],
}
console.log(obj2.money(2))
console.log(obj2.arr())
ts-node 查看一下输出结果
此时使用泛型再定义该接口
interface objType<T1, T2> {
money: (value: T1) => T1
arr: () => T2[]
}
const obj2: objType<number, string> = {
money: (val) => val,
arr: () => ['1'],
}
console.log(obj2.money(2))
console.log(obj2.arr())
查看输出结果还是一样的, 但这种方法就很灵活了, 可以提高类型的可重用型 这很像我们平时封装的函数.