前端面试题114(在TypeScript中,如何实现一个使用泛型(Generics)的高阶函数(Higher-order function)?请给出一个例子)

在这里插入图片描述
在TypeScript中,泛型(Generics)允许你在编写函数或类的时候不预先指定具体的类型,而是在使用的时候再指定类型。这为创建可重用的组件提供了极大的灵活性。高阶函数(Higher-order function)是指那些至少满足以下一个条件的函数:接受一个或多个函数作为参数,或者返回一个函数。

下面是一个结合了泛型和高阶函数的例子。这个例子定义了一个高阶函数processArray,它接受一个处理函数作为参数,并应用这个处理函数到数组中的每个元素上,最后返回一个新的数组。这里使用了泛型来确保输入和输出数组的元素类型是相关的,但可以不同。

function processArray<T, R>(transformFn: (item: T) => R, array: T[]): R[] {
  return array.map(transformFn);
}

// 使用示例

// 定义一个将字符串转换为大写的函数
const toUpperCase = (str: string): string => str.toUpperCase();

// 使用processArray处理一个字符串数组
const originalStrings = ['apple', 'banana', 'cherry'];
const upperCasedStrings = processArray(toUpperCase, originalStrings);

console.log(upperCasedStrings); // 输出: ['APPLE', 'BANANA', 'CHERRY']

// 另一个示例,将数字数组的每个元素乘以2
const multiplyByTwo = (num: number): number => num * 2;

const numbers = [1, 2, 3];
const doubledNumbers = processArray(multiplyByTwo, numbers);

console.log(doubledNumbers); // 输出: [2, 4, 6]

在这个例子中,processArray是一个高阶函数,因为它接受一个函数transformFn作为参数,并且它的定义使用了泛型T表示输入数组的元素类型,R表示输出数组的元素类型。这样,你可以用这个高阶函数处理不同类型的数组,并执行不同类型转换,而这一切都在编译时得到类型检查,保证了类型安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS-CL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值