[英]Dynamic return type of object properties using TypeScript
我有一个函数,它接收一个对象并返回一个具有相同属性名称的方法对象:
function someGenerator<P extends {}>(params: P) {
return Object.keys(params).reduce((acc, key) => ({
...acc,
[key]: () => {
console.log(params[key]);
},
}), {});
}
基本上我想像这样使用它:
type Params = {
str: string;
}
const params = {
str: 'some text',
}
const someInstance = someGenerator<Params>(params);
someInstance.str();
我试图定义该函数的返回类型:
type ReturnType<P> = {
[K in keyof P]: () => void;
}
但是这种类型并没有像我预期的那样工作,因为返回类型的定义没有像它应该的那样保存参数。
任何人都可以帮助定义返回类型吗?
.reduce
推断类型通常被定义为累加器的起始值。 当我有一个返回reduce
d 值的函数时,我通常会这样做:
function someGenerator<P extends Record<string, any>>(params: P) {
return Object.keys(params).reduce(
(acc, key) => ({
...acc,
[key]: () => {
console.log(params[key]);
}
}),
{} as Record<keyof P, () => void>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.