加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

一文学懂TypeScript的范例

发布时间:2019-03-22 03:28:28 所属栏目:建站 来源:疯狂的技术宅
导读:你将学到什么 阅读本文后,你应该可以或许领略以下代码的寄义: interfaceArrayT{ concat(...items:ArrayT[]|T):T[]; reduceU( callback:(state:U,element:T,index:number,array:T[])=U, firstState?:U):U; } 假如你以为这段代码很是隐秘 那么我赞成你的意见。

你可以看到范例参数 T 在 Stack 的主体内呈现两次。因此,该接口可以直观地领略如下:

  •  Stack 是一堆值,它们都具有给定的范例 T。每当你提到 Stack 时,必需写 T。接下来我们会看到毕竟该怎么用。
  •  要领 .push() 接管范例为 T 的值。
  •  要领 .pop() 返回范例为 T 的值。

假如行使 Stack,则必需为 T 指定一个范例。以下代码表现了一个假造栈,其独一目标是匹配接口。

  1. const dummyStack: Stack<number> = {  
  2.   push(x: number) {},  
  3.   pop() { return 123 },  
  4. }; 

例子:map

map 在 TypeScript 中的界说。譬喻:

  1. const myMap: Map<boolean,string> = new Map([  
  2.   [false, 'no'],  
  3.   [true, 'yes'],  
  4. ]); 

函数的范例变量

函数(和要领)也可以引入范例变量:

  1. function id<T>(x: T): T {  
  2.   return x;  

你可以按以下方法行使此成果。

  1. id<number>(123); 

因为范例揣度,还可以省略范例参数:

  1. id(123); 

转达范例参数

函数可以将其她的范例参数传给接口、类等:

  1. function fillArray<T>(len: number, elem: T) {  
  2.   return new Array<T>(len).fill(elem);  

范例变量 T 在这段代码中呈现三次:

  •  fillArray<T>:引入范例变量
  •  elem:T:行使范例变量,从参数中选择它。
  •  Array<T>:将 T 转达给 Array 的结构函数。

这意味着:我们不必显式指定Array<T>的范例 T —— 它是从参数 elem中揣度出来的:

  1. const arr = fillArray(3, '*');  
  2.   // Inferred type: string[] 

总结

让我们用前面学到的常识来领略最开始看到的那段代码:

  1. interface Array<T> {  
  2.   concat(...items: Array<T[] | T>): T[];  
  3.   reduce<U>(  
  4.     callback: (state: U, element: T, index: number, array: T[]) => U,  
  5.     firstState?: U): U;  
  6.   ···  

这是一个Array的接口,其元素范例为 T,每当行使这个接口时必需填写它:

  •  要领.concat()有零个或多个参数(通过 rest 运算符界说)。个中每一个参数中都具有范例 T[]|T。也就是说,它是一个 T 范例的数组或是一个 T 值。
  •  要领.reduce() 引入了本身的范例变量 U。 U 暗示以下实体都具有沟通的范例(你不必要指定,它是自动揣度的):
    •   Parameter state of callback() (which is a function)
    •   state 是 callback() 的参数(这是一个函数)
      •   Result of callback() 
    •   callback()的返回
    •    reduce()的可选参数 firstState
      •   Result of .reduce() 
    •    reduce()的返回

callback 还将得到一个 element 参数,其范例与 Array 元素具有沟通的范例 T,参数 index 是一个数字,参数 array 是 T 的值。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读