Typescript 如何推断对象转换值的类型

Typescript 如何推断对象转换值的类型,typescript,generics,Typescript,Generics,我正在努力学习如何键入一个函数,该函数通过迭代对象的每个属性并分别转换这些属性来转换对象 const x = {a: 1, b: 'hello'}; const y = {c: 1, d: true}; function transform<T extends Object>(src:T): {[k in keyof T]: any[]} { return Object.keys(src).reduce((acc, key) => ({...acc, [key]: [

我正在努力学习如何键入一个函数,该函数通过迭代对象的每个属性并分别转换这些属性来转换对象

const x = {a: 1, b: 'hello'};
const y = {c: 1, d: true};

function transform<T extends Object>(src:T): {[k in keyof T]: any[]} {
    return Object.keys(src).reduce((acc, key) => ({...acc, [key]: [src]}), {}) as any;
}

// ideally typed {a: number[], b: string[]}
// actually typed {a: any[], b: any[]}
const xPrime = transform(x); 

// ideally typed {c: number[], d: boolean[]}
// actually typed {c: any[], d: any[]}
const yPrime = transform(y); 
constx={a:1,b:'hello'};
常数y={c:1,d:true};
函数转换(src:T):{[k in keyof T]:any[]}{
返回Object.keys(src).reduce((acc,key)=>({…acc,[key]:[src]}),{})如有;
}
//理想类型{a:number[],b:string[]}
//实际键入{a:any[],b:any[]}
常量xPrime=变换(x);
//理想类型{c:number[],d:boolean[]}
//实际键入{c:any[],d:any[]}
恒量y=变换(y);
在本例中,我将它们包装在数组中,但我希望该解决方案将帮助我解决其他容器类型更复杂的问题


谢谢

只要用
T[k][
替换
any[]

函数转换(src:T):{[k in keyof T]:T[k][]{
抛出错误('unimplemented');//您的实现很奇怪
}

只要用
T[k][
替换
any[]

函数转换(src:T):{[k in keyof T]:T[k][]{
抛出错误('unimplemented');//您的实现很奇怪
}

你可以在这里创建一个指向操场的短链接:棒极了-比我想象的简单多了!你可以在这里创建一个到操场的短链接:棒极了-比我想象的简单多了!