在TypeScript手册中是用于声明合并的以下示例:
// observable.js
export class Observable<T> {
// ... implementation left as an exercise for the reader ...
}
// map.ts
import { Observable } from "./observable";
declare module "./observable" {
interface Observable<T> {
map<U>(f: (x: T) => U): Observable<U>;
}
}
Observable.prototype.map = function (f) {
// ... another exercise for the reader
}
// consumer.ts
import { Observable } from "./observable";
import "./map";
let o: Observable<number>;
o.map(x => x.toFixed());
Run Code Online (Sandbox Code Playgroud)
由于Webpack会编译我的TypeScript代码,因此我可以使用npm模块xstream,该模块附带以下类型定义:
import {Stream, …Run Code Online (Sandbox Code Playgroud) 该应用程序使用xstream作为反应库。
我陷入了一种奇怪的行为。
我的流就是这个图
在第一个会话var更新中,我得到了以下调试结果:
问题:未执行“调试2”分支
如果我更新会话项(以便产生新的存储事件),则两个分支均按预期执行
如果在“ debug 0”处添加.remember(),也会发生相同的良好行为。

没有过滤器(并且不记得),流程从第一个事件开始就给出此结果
我的怀疑是在连接第二个分支之前在“调试0”处观察到某种情况,因此第一个事件已被使用。但是,如果两个分支xs.merged在一起怎么办?如何执行一个分支而不执行第二个分支?这两个分支没有过滤器或其他处理,它们合并映射到化简函数。关于如何调试和解决这种情况的任何建议?