当前位置:   article > 正文

TypeScript — 泛型

TypeScript — 泛型

前言:

        只是一篇学习笔记!!!

正文:

泛型:指在定义函数、接口或类的时候,不预先指定具体类型,而在使用的时候再指定类型。

  1. //泛型函数
  2. //需求:创建一个方法使返回值的类型与传入参数的类型相同
  3. function getSameType<T>(value:T):T{
  4. return value
  5. }
  6. console.log(getSameType(<number> 2)) //在使用的时候要指明类型,其实可以不指明,ts会进行类型推断
  7. console.log(getSameType(<string>'4'))

在使用泛型变量的时候,必须把这些变量当做任意或所有类型。

  1. function getSameType<T>(value:T):number{
  2. return value.length //类型T上不存在属性“lebgth”
  3. }
  4. console.log(getSameType(<string>'123')) //即使在使用的时候指定的类型存在length属性,还是报错

 解决方案:(使用接口约束类型)

  1. interface Itype{
  2. length:number
  3. }
  4. function getSameType<T extends Itype>(value:T):number{
  5. return value.length
  6. }
  7. getSameType(<string>'123')
  8. getSameType(<Array<number>>[1,2,3])
  9. getSameType(<number>123) //类型"number"的参数不能赋给类型"Itype"的参数

 定义接口:(在使用接口的时候指定类型)

  1. 方式一:
  2. interface IArr{
  3. <T>(value:T,count:number):Array<T> //定义函数的格式
  4. }
  5. const getArr1:IArr = function <T>(value:T,count:number):T[]{
  6. }
  7. 方式二:
  8. interface IArr<T>{
  9. (value:T,count:number):Array<T>
  10. }
  11. const getArr1:IArr<string> = function <T>(value:T,count:number):T[]{ //在使用接口的时候就要确定类型
  12. }
  1. // 定义接口
  2. interface Idata{
  3. id:number,
  4. title:string,
  5. content:string,
  6. createTime:string
  7. }
  8. interface Itest<T>{
  9. code:T,
  10. data:Idata,
  11. message:string
  12. }
  13. function responseFn<U>(arg:U,count:number):Itest<number>{ //在使用的时候要指定类型
  14. let newArr:U[] = []
  15. for(let i = 0; i<count;i++){
  16. newArr.push(arg)
  17. }
  18. console.log(newArr)
  19. return {
  20. code:200,
  21. data:{
  22. id:1,
  23. title:'test1',
  24. content:'test1',
  25. createTime:'2022-01-02'
  26. },
  27. message:'成功'
  28. }
  29. }
  30. let test1 = responseFn(<string>'2',2)
  31. console.log(test1)
  32. let test2 = responseFn(<number> 2 ,4)
  33. console.log(test2)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/577675?site
推荐阅读
相关标签
  

闽ICP备14008679号