gpt4 book ai didi

function - Typescript 中的通用函数和推断通用键

转载 作者:搜寻专家 更新时间:2023-10-30 22:01:00 24 4
gpt4 key购买 nike

我试图从以下函数中删除第二个泛型,因为(恕我直言)应该可以推断出 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),这正是我想要的,但是我该如何添加实现呢?

interface NormalizerFactory<T extends {}> {
<K extends keyof T>(...props:K[]):(list:T[]) => {[id:string]:T};
}

最佳答案

您可以通过将 K 替换为 keyof T 来删除第二个泛型,如下所示:

const normalizeToProps = <T>(...props:(keyof T)[]) => (list:(keyof T)[]):{[id:string]:T} => list.reduce(
(map, item) => {
const identifier = castArray(get<T, T[keyof T]|T[keyof T][]>(item, props)).join('');
map[identifier] = item;
return map;
},
{}
);

关于function - Typescript 中的通用函数和推断通用键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41714167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com