基本的に2つのオブジェクトをマージする汎用配列reduce関数で作業するための型を取得しようとしています。次のスニペットは、実際のコードのダンプされたバージョンです。 fl
のタイプが{}
で、IFoo & IBar
でないのはなぜですか?配列の縮小型の型交差の型
(私は、この特定の例では、簡単に単一Object.assign()
の呼び出しに置き換えることができることを承知している。)
const flatten = <K, T>(prev: K, x: T): K & T => {
return Object.assign(prev, x);
};
interface IFoo {
foo: true;
}
interface IBar {
bar: true;
}
const fooRes: IFoo = { foo: true };
const barRes: IBar = { bar: true };
const fl = [fooRes, barRes].reduce(flatten, {});
console.log(fl); // here, fl : {}
驚くような答え!詳細な説明を本当に感謝します。 – marvinhagemeister