标签: xstream-js

TypeScript:如何扩展npm模块的类型定义?

在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)

typescript xstream-js

5
推荐指数
0
解决办法
492
查看次数

XStreams中忽略的第二个合并分支

我正在使用存储状态插件开发Cycle JS应用。

该应用程序使用xstream作为反应库。

我陷入了一种奇怪的行为。

我的流就是这个图

在此处输入图片说明

在第一个会话var更新中,我得到了以下调试结果:

  • 调试0
  • 调试1
  • 调试3

问题:未执行“调试2”分支

如果我更新会话项(以便产生新的存储事件),则两个分支均按预期执行

  • 调试0
  • 调试1
  • 调试2
  • 调试3

如果在“ debug 0”处添加.remember(),也会发生相同的良好行为。 在此处输入图片说明

  • 调试0
  • 调试1
  • 调试2
  • 调试3

更陌生的是,如果我移除过滤器,流程将按预期工作 在此处输入图片说明

没有过滤器(并且不记得),流程从第一个事件开始就给出此结果

  • 调试0
  • 调试1
  • 调试2
  • 调试3

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

reactive-programming cyclejs xstream-js

1
推荐指数
1
解决办法
72
查看次数