如题,本篇我们介绍下ts中函数型接口。
ts中函数型接口,非常类似于java、c#中使用lambda表达式传入匿名函数。因为对象中仅包含已个函数,这个对象的全部意义也仅在于那个可被外部调用的函数,故而称之为函数型接口。
05_interface_func.ts
/* * ts中接口 * 函数型接口 ,非常类似于java、c#中使用lambda表达式传入匿名函数 * * */ // // //对两个数进行运算得到另一个数 函数型接口 interface CalcTwo{ (a:number,b:number):number; } /** * 计算数组被某种算法运算的结果 * @param {number[]} arr 数组 * @param {CalcTwo} calc 用户指定的算法函数 * @param {number} initVal 传入初始值 * @returns {number} 得到最终运算结果 */ function calcArr(arr:number[],calc:CalcTwo,initVal:number):number{ var result=initVal; arr.forEach((value)=>{ result = calc(result,value); }); return result; } var arr:number[]=[1,3,5,7,9]; var add=function(a:number,b:number):number{ return a+b; }; var multiply=function(a:number,b:number):number{ return a*b; }; console.log("相加",calcArr(arr, add, 0));//25 console.log("相乘",calcArr(arr, multiply, 1));//945 //或者直接传入一个匿名函数亦可 var s1=calcArr(arr,function(a,b){ return a*b; },1); console.log("s1",s1);//945 var s2=calcArr(arr,function (a,b) { return (a+1)*(b+1); },1); console.log("s2",s2);//10170
Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1