我正在尝试从以下函数中删除第二个泛型,因为(恕我直言)应该可以推断出K extends keyof T
:
const normalizeToProps = <T, K extends keyof T>(...props:K[]) => (list:T[]):{[id:string]:T} => list.reduce(
(map, item) => {
const identifier = castArray(get<T, T[K]|T[K][]>(item, props)).join('');
map[identifier] = item;
return map;
},
{}
);
该功能的作用对我的问题并不重要。这都是关于签名的第一部分<T, K extends keyof T>
。我宁愿只写<T>
。因为那样调用函数会更容易。
我已经定义了一个正是我想要的接口,但是如何添加实现呢?
interface NormalizerFactory<T extends {}> {
<K extends keyof T>(...props:K[]):(list:T[]) => {[id:string]:T};
}