【发布时间】:2020-05-21 17:16:09
【问题描述】:
我有这个:
export function reduceByProp<T, Y extends keyof T>(
array: T[],
mapper: (a: T) => Y
): { [key: Y]: T } {
return array.reduce(
(previous: T, current: T) => ({ ...previous, [mapper(current)]: current }),
{}
);
}
但是 TypeScript 对 [key: Y] 不满意,因为索引是 string 或 number。但是由于Y 是T 的键,所以默认情况下它也是字符串或数字,对吗?
【问题讨论】:
-
您能否展示您尝试通过
reduceByProp实现的通话示例? -
不确定这是否是这里的原因,但这个文档说
keyof产生string | number | symbol,所以符号可能会搞砸。 typescriptlang.org/docs/handbook/release-notes/… -
我很容易告诉您将
{[key: Y]: T}更改为{[K in Y]: T},但我不确定您的其余代码,因为这些类型对我来说似乎不合适。我会将其更改为 this 除非您有理由,例如,您希望将Y限制为keyof T而不仅仅是任何键。 -
@jcalz - 现在可以了。 :-) 或者当然是第二个。
标签: typescript