最近在开发vue+TS的项目 自己也对TS了解的不是很多
泛型 (在定义函数/接口/类型,不预先指定具体的类型,而是在使用的时候在指定类型限制的一种特性)
当定义一个变量不确定的类型的时候有两种解决的方式 1.使用any 2.使用泛型
泛型分为两种 1.分开指定类型 2.同时指定类型
1.分开指定泛型
fn<占位符>(a:占位符):占位符{
函数体
}
eg:
function fn<T>(a: T): T { return a}
fn<number>(1)
// 类似于函数传参, 传什么数据类型,T就表示什么数据类型
2.同时指定类型
type 类型名 = <占位符>(形参: 占位符)=>占位
eg:
type FnType=<T>(str:T)=>T
const generaeStr:FnType=(str)=>{
return str
}
let str=generateStr<string>("111")
泛型函数调用的两种写法
// 简单写法, 平时开发推荐使用
fn(111)
// 完整写法
fn<number>(111)
T代表ts捕获的类型,它可以是任意类型,可以和任意类型结合使用,例如,数组:T[],对象:{age:T },元组:[T,T]。如果不和其他类型配合,就代表any。