Как говорится в заголовке, я хотел бы переписать приведенное ниже утверждение на TypeScript.
EventEmitter = require('events').EventEmitter
в стиле ES6
import {EventEmitter} from "events"
Я не уверен, эквивалентны ли эти два, на самом деле я думаю, что это не так, потому что, когда я пытаюсь использовать RxJS со вторым оператором выше, он не компилирует приведенный ниже пример, тогда как он делает с первым.
Я получаю следующую ошибку, когда использую второй оператор выше.
.build/lib/process.ts(12,3): error TS2345: Argument of type 'EventEmitter' is not assignable to parameter of type '{ on: (name: string, cb: (e: any) => any) => void; off: (name: string, cb: (e: any) => any) => vo...'.
Property 'off' is missing in type 'EventEmitter'.
Пример:
var EventEmitter = require('events').EventEmitter,
Rx = require('rx');
var eventEmitter = new EventEmitter();
var source = Rx.Observable.fromEvent(
eventEmitter,
'data',
function (foo, bar) { return { foo: bar, bar: bar }; });
var subscription = source.subscribe(
function (x) {
console.log('Next: foo -' + x.foo + ', bar -' + x.bar);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
eventEmitter.emit('data', 'baz', 'quux');
// => Next: foo - baz, bar - quux