视频位置 TypeScript快速梳理_下篇 0:54:50
泛型允许我们在定义函数、类或接⼝时,使⽤类型参数来表示未指定的类型,这些参数在具体使⽤时,才被指定具体的类型,泛型能让同⼀段代码适⽤于多种类型,同时仍然保持类型的安全性。
//<T> 表示 动态指定类型。 泛型用在函数身上,所以叫泛型函数。
// 泛型函数定义
function logData<T>(data: T): T {
console.log(data)
return data
}
//测试:
// 调用时具体化为:
//function logData(data: number): number // T 被替换为 number
logData<number>(100)
//function logData(data: string): string // T 被替换为 string
logData<string>('hello')泛型可以有多个
//T|U 表示返回值是联合类型,可能是T,可能是U
function logData<T, U>(data1: T, data2: U): T | U {
console.log(data1,data2)
return Date.now() % 2 ? data1 : data2
}
//测试:
logData<number, string>(100, 'hello')
logData<string, boolean>('ok', false)泛型接⼝
也就是写接口的时候,可以用泛型。
interface PersonInterface<T> {
name: string,
age: number,
extraInfo: T
}
//测试:
let p : PersonIterface<string> = {
name: 'tom',
age: 18,
extraInfo: '250' //string
}
let p1: PersonInterface<string>
let p2: PersonInterface<number>
p1 = { name: '张三', age: 18, extraInfo: '⼀个好⼈' }
p2 = { name: '李四', age: 18, extraInfo: 250 }
