admin 管理员组文章数量: 1184232
泛型
在定义函数,接口,类的时候不能预先确定要使用的数据的类型
function getArr<T>(value: T, count: number): T[] {
let arr: Array<T> = []
for(let i = 0; i < count; i++) {
arr.push(value)
}
return arr
}
let arr1 = getArr<number>(1, 3)
let arr2 = getArr<string>('2', 3)
console.log(arr1)
console.log(arr2)
多个泛型参数的函数
function getMsg<K,V>(value1: K, value2: V): [K, V] {
return [value1, value2]
}
let arr1 = getMsg<string, number>('jack', 100)
console.log(arr1)
泛型接口
泛型接口:在定义接口时,为接口中的属性或方法定义泛型类型
// 定义一个泛型接口
interface IBaseCRUD<T> {
data: Array<T>
add: (t: T) => T
getUserId: (id: number) => T
}
泛型类
class GenericNumber<T> {
// 默认得属性的值的类型是泛型类型
defaultValue: T
add: (x: T, y: T) => T
}
let g1: GenericNumber<number> = new GenericNumber<number>()
g1.defaultValue = 100
g1.add = function (x, y) {
return x + y
}
console.log(g1.add(10, 20))
泛型约束
如果我们直接对一个泛型参数 length 属性,会报错,因为这个泛型根本就不知道它有这个属性
interface ILength {
length
}
function getLength<T extends ILength>(x: T): number {
return x.length
}
console.log(getLength<string>('Hello'))
本文标签: Typescript 泛型
版权声明:本文标题:【TypeScript】泛型 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1758620007a3088295.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论