【发布时间】:2021-11-04 12:38:38
【问题描述】:
抱歉标题模糊,但我不知道如何简洁地表达这个问题。
基本上,我有以下代码(删除了不重要的部分):
function identity<T>(value: T): T {
return value;
}
function extent<T, K>(
values: T[],
map: (value: T) => K = identity // the '= identity' part gives an error
): [K, K] | undefined {
let min;
let max;
// ... stuff ...
return min === undefined || max === undefined ? undefined : [map(min), map(max)];
}
默认= identity 值会导致编译器错误。
我可以从extent 的签名中删除map 参数的默认值,并始终自己提供一个:
extent([5, 1, 3, 4, 8], x => x)
这可以正常工作,但我宁愿不提供第二个参数,除非我实际上将值从一种类型映射到另一种类型。
如何键入indentity 函数,以便将其作为extent 的map 参数的默认值接受?如果这很重要的话,我暂时停留在 TypeScript 3.6 上。
【问题讨论】:
标签: typescript generics default-value return-type typing