typescript--7 泛型的理解

294 阅读1分钟

typescript 泛型的理解

在学习泛型之前,先明确一下泛型的作用:就是类型不明确的时候定义的一个变量

下面结合代码来讲解下泛型

  1. 定义一个类型叫做T
function fn <T>(a:T):T {
  return a
}
fn(10)   
fn<string> ('hello')
// 调用的时候不指定类型, ts 会自动推断  但是还是建议使用第二种写法指定泛型的类型

上面的函数 参数类型就是一个泛型 并且定义了T为这个不知道类型的变量 在函数中这样使用泛型可以保证 传入的值和返回值的类型相同

  1. 将泛型指定一定的范围

    可以通过定义接口或者类的形式,来给泛型定义一个范围

    interface Inter {
      length: number
    }
    ​
    function fn1<T extends Inter> (a:T):number {
      return a.length
    }
    ​
    // 通过 T extends Inter 来指定传入的参数 a 实现接口 Inter 那就必然包含 length属性
    fn1('123') /// 正常
    fn1(123)   // 错误
    fn1({length:10}) // 正常
    fn1({name:'cg'}) // 错误
    

\