Здравствуйте, натолкнулся на код, и не могу разобрать его.
interface ImessagesOperation extends Function {
(messages: Message []):Message[];
}
newMessages: Subject<Message> = new Subject<Message>();
updates:Subject<any> = new Subject<any>();
create:Subject<any> = new Subject<any>();
messages:Observable<Message[]>;
martThreadAsRead:Subject<any> = new Subject<any>();
constructor() {
this.messages = this.updates
.scan((messages:Message[],
operation:ImessagesOperation) => {
return operation(messages);
},
initialMessages)
.publishReplay(1)
.refCount;
this.create
.map( function(message: Message) : ImessagesOperation {
return (messages: Message[]) => {
return messages.concat(message);
}
})
.subscribe(this.updates);
this.newMessages
.subscribe(this.create);
}
Что это за магическая функция, что она делает и возвращает ?
interface ImessagesOperation extends Function {
(messages: Message []):Message[];
}
.scan((messages:Message[],
operation:ImessagesOperation) => {
return operation(messages);
},
И здесь есть operation, первый принимается как параметр, второй
operation(messages);
как функция ?