TypeScript - 不能“新”现有类型的接口

时间:2014-01-03 15:14:56

标签: typescript rxjs

我正在尝试在我正在编写的TypeScript应用程序中使用RxJs定义。我导入了defs,现在我正在尝试创建一个主题。

this.stream = new Rx.Subject();

然而,当我尝试这个时,我收到以下错误。

  

错误6属性'Subject'在类型'{的值上不存在   内部:{inherits(child:Function,parent:Function):Function;   addProperties(obj:Object,... sourcces:Object []):void;的AddRef(XS:   Rx.IObservable,r:{getDisposable():Rx._IDisposable; }):   Rx.IObservable; };观察者:{create(onNext:(value:any)=> void,   onError?:(例外:任何)=> void,onCompleted?:()=>无效):   Rx.IObserver; fromNotifier(handler :(通知:Rx.INotification)   => void):Rx.IObserver; }; }

当我查看类型defs时,我可以看到Subject类已被定义为接口

export interface Subject {
    (): ISubject;

    create(observer: IObserver, observable: IObservable): ISubject;
}

有人可以告诉我如何创建此Subject类的实例,因为我无法找到方法。目前使用TS 9.1.1。我认为():ISubject 可能会这样做,但似乎没有任何影响。

我知道一些建议是定义一个类而不是然后我需要从基接口实现所有方法,所以这将是巨大的,因为它继承自IObservable。

1 个答案:

答案 0 :(得分:1)

使用最新版本的rx.js typing from Definitely Typed可行。更新您的定义是可行的方法。

你也可以在TypeScript Playground上试试 - 你需要粘贴来自Definitely Typed的代码来测试它(这里似乎不允许长到游乐场的链接)。

var x = new Rx.Subject();