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);
};
我正在阅读 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);
};