TypeScript 基础:泛型和箭头函数

TypeScript fundamentals: generics and arrow functions

我正在阅读 TypeScript 手册并试图转换以下内容:

function map<Input, Output>(
  arr: Input[],
  func: (arg: Input) => Output
): Output[] {
  return arr.map(func);
}

到箭头函数。所以我这样做了,我认为这是正确的:

const map2 = <Input, Output>(
  arr: Input[],
  func: (arg: Input) => Output
): Output[] => {
  return arr.map(func);
};

但我想知道如果我想为这样的函数使用类型别名,我将如何实现它:

type Fn = <X, Y>(x: X) => Y;
const map2 = <Input, Output>(
  arr: Input[],
  func: Fn 
): Output[] => {
  return arr.map(func);
};

上面的示例由于 Output[] 而产生错误。那么我将如何定义 map2 的输出类型,因为 Output[] 将不再有效?任何帮助将不胜感激!

我们不能按照您描述的确切方式使用 Fn,我们需要以允许我们在使用类型时传入泛型的方式定义 Fn .像这样:

type Fn<X, Y> = (x: X) => Y;

const map2 = <Input, Output>(
  arr: Input[],
  func: Fn<Input, Output>
): Output[] => {
  return arr.map(func);
};