Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何成功”;“合并”;两组带有getter的普通对象?_Javascript_Typescript - Fatal编程技术网

Javascript “如何成功”;“合并”;两组带有getter的普通对象?

Javascript “如何成功”;“合并”;两组带有getter的普通对象?,javascript,typescript,Javascript,Typescript,下面我有两组普通对象,每个对象中都有一个getter。我很想找到一种方法来合并这两个对象。然而,当我合并它们时,我希望它们仍然是getter。我不希望解析side getter中的值 const love = { get cats() { return 'meow'; }, }; const hate = { get dogs() { return 'woof'; }, }; console.log({...love, ...hate}); // { cats

下面我有两组普通对象,每个对象中都有一个getter。我很想找到一种方法来合并这两个对象。然而,当我合并它们时,我希望它们仍然是getter。我不希望解析side getter中的值

const love = {
  get cats() {
    return 'meow';
  },
};

const hate = {
  get dogs() {
    return 'woof';
  },
};

console.log({...love, ...hate}); // { cats: 'meow', dogs: 'woof' }
console.log(Object.assign(love, hate)); // { cats: [Getter], dogs: 'woof' }

使用
defineProperties
将属性放在对象上,将
对象中的值分散到对象中。getOwnPropertyDescriptors

const love={
捉猫{
“喵喵”一声;
},
};
恒恨={
养狗{
返回“纬”;
},
};
const result=Object.defineProperties({}{
…Object.getOwnPropertyDescriptors(爱),
…Object.getOwnPropertyDescriptors(hate),
});

log(Object.getOwnPropertyDescriptor(结果为'dogs')从@CertainPerformances获得了这个小金块答案:

function mergeGetters<A, B>(a: A, b: B): A & B {
  const result = Object.defineProperties(
    {},
    {
      ...Object.getOwnPropertyDescriptors(a),
      ...Object.getOwnPropertyDescriptors(b),
    }
  );
  return result;
}
函数合并器(a:a,b:b):a&b{
const result=Object.defineProperties(
{},
{
…对象.getOwnPropertyDescriptors(a),
…对象.getOwnPropertyDescriptors(b),
}
);
返回结果;
}

不要使用扩展语法或
对象。分配
,它们将始终调用getter。所有宝贵的类型信息都消失了@ThomasReggi
const result:typeof love&typeof hate=…
应该可以解决这个问题