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
在Typescript中,如何将泛型容器类型的对象合并到对象类型的泛型容器中?_Typescript_Rxjs - Fatal编程技术网

在Typescript中,如何将泛型容器类型的对象合并到对象类型的泛型容器中?

在Typescript中,如何将泛型容器类型的对象合并到对象类型的泛型容器中?,typescript,rxjs,Typescript,Rxjs,我试图创建一个函数,将rxjs.Observables的对象合并为单个Observable 比如说, 假设我有一张观察图,如下所示 const fooObservable$: Observable<Foo> = createFooObservable(); const barObservable$: Observable<Bar> = createBarObservable(); // Type of observables would be // { foo: Obs

我试图创建一个函数,将
rxjs.Observable
s的对象合并为单个
Observable

比如说,

假设我有一张观察图,如下所示

const fooObservable$: Observable<Foo> = createFooObservable();
const barObservable$: Observable<Bar> = createBarObservable();

// Type of observables would be
// { foo: Observable<Foo>, bar: Observable<Bar> }
// And, `keyof typeof observables` would be
// "foo" | "bar"
const observables = {
    foo: fooObservable$,
    bar: barObservable$,
};
const foooobservable$:Observable=createfoooobservable();
const barObservable$:Observable=createBarObservable();
//可观测的类型是
//{foo:Observable,bar:Observable}
//而且,`keyof typeof observates`将是
//“foo”|“bar”
常量观测值={
foo:foo可观测$,
巴:可观测气压$,
};
那么,我怎样才能创建一个合并如下所示的可观察对象的函数呢

// typeof merged$ would be
// Observable<{ foo: Foo, bar: Bar }>
const merged$ = merge(observables);
//合并的$的类型将是
//可观察
const merged$=合并(可观测);
我不知道如何定义函数
merge()


如果有好的方法,请给我一个答案。

在本例中,
M
是可观察的(但它确实可以应用于任何泛型类型):

M类{
价值:A;
}
类型未打包=T扩展M?U:从来没有;
类型合并正文={
[P in keyof T]:未包装
}
函数合并(t:t):M{
...
}
然后举一个例子:

let o = {
    a: new M<number>(),
    b: new M<string>()
}

const m = merge(o)
// type checks!
let n: number = m.value.a
设o={
a:新的M(),
b:新的M()
}
常数m=合并(o)
//打字检查!
设n:number=m.value.a
let o = {
    a: new M<number>(),
    b: new M<string>()
}

const m = merge(o)
// type checks!
let n: number = m.value.a