为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第4天 高仿AntD从零到一打造组件库

标签:
Html5 Typescript

课程名称:2022升级 React18+TS高仿AntD从零到一打造组件库

课程章节: 第2章 欢迎来到类型的世界 - Typescript

主讲老师:张轩

课程内容:

今天学习的内容包括:

2-10 泛型(Generics) 第一部分
2-11 泛型(Generics) 第二部分 - 约束泛型
2-12 泛型(Generics) 第三部分 - 类和接口

课程收获:

泛型:定义函数、接口或类时,不预先指定具体类型,而在使用时指定类型
定义时用一个未确定的类型变量代替具体的类型,通过在使用时传入的类型决定该未确定类型的具体类型。
场景:定义时可以有多个类型传入,但是又希望传出的类型根据传入的类型进行可控的设置

泛型的定义:

function echo<T>(arg:T):T{
    return arg
}

const result = echo(123)
const result = echo('xiaoh')

泛型操作 T T
T只是一个符号

  1. 泛型 Generics

在定义时,不指定类型,在使用时约定

  1. eg. 简单用法
function echo <T>(arg: T) : T {

  return arg

}

function swap <T, W>(tuple: [T, W]) : [T, W] {

  return [ tuple[1], tuple[0]  ]

}

const result = swap(['string',  123])
  1. 约束泛型
function echoWithArr <T>(arg: T[]) : T[] {  // 在声明伟泛型后,跟上[],  约定泛型包含类型

    console.log(arr.length)

    return arg

}


// 进阶

interface IWithLength {

 length: number

}

function echoWithLength <T extends IWithLength>(arg: T) : T { 

 // <T extends ...>指定泛型包含有 length属性

    console.log(arr.length)

    return arg

}

函数的参数和返回值,使用泛型

类的泛型使用

class Que<T> {

   data:[],

   pop( item:  T):   T {

      this.data.shift( item )

   }

   push(  item:  T):   T{

     this.data.push( item )

   }

}

const que = new Que <number>()

que.push(1)

const que2 = new  Que <string> ()

interface的泛型用法


interface Json <T, U>{
  key: T;

   value: U

}

let    js1:  Json<number, string> = {key: 123,   value: 'one vlue'}

let    js2:  Json<string, boolean > = {key: 'str',   value: true}

let    arr:  number[] = [1, 3, 2]   //  约定数组元素都是number

let    arr2:  Array<number> = [1, 2, 3]   // 原本有个泛型是Array,再指定array的元素是number


interface IPlus<T> {

    (a: T, b: T) : T       //  传入泛型,返回泛型  

}

function plus( a: number,  b: number ): number {

  return a+b

}

function connect( a: string,  b: string ): string {

  return a+b

}

const a :  IPlus<number> = plus  //  指定a函数是泛型函数

const b :  IPlus<string> = plus
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消