TS

101 阅读1分钟

最近在开发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。

参考 zhuanlan.zhihu.com/p/470406227