@@ -32,9 +32,9 @@ import {InstanceLink} from '../model/instanceLink';
32
32
33
33
34
34
interface ObserverMap {
35
- [ key : string ] : Subject < any > ;
35
+ [ key : string ] : Subject < ReturnType > ;
36
36
}
37
-
37
+ type ReturnType = Instance | InstanceLink | number | DockerOperationError ;
38
38
@Injectable ( {
39
39
providedIn : 'root'
40
40
} )
@@ -89,9 +89,8 @@ export class SocketService {
89
89
*
90
90
* @param eventName
91
91
*/
92
- public subscribeForEvent ( eventName : EventType ) : Observable < number | InstanceLink | Instance | DockerOperationError > {
93
-
94
- return new Observable ( ( observer : Observer < any > ) => {
92
+ public subscribeForEvent < T extends ReturnType > ( eventName : EventType ) : Observable < T > {
93
+ return new Observable < T > ( ( observer : Observer < T > ) => {
95
94
96
95
/**
97
96
* First step to subscribe for an event is to append the new observer to the set
@@ -111,7 +110,7 @@ export class SocketService {
111
110
}
112
111
113
112
if ( ! registeredEvents . includes ( eventName ) ) {
114
- this . observers [ eventName ] = new Subject < any > ( ) ;
113
+ this . observers [ eventName ] = new Subject < T > ( ) ;
115
114
console . log ( 'registering for event' , eventName ) ;
116
115
117
116
this . send ( { event : publishEventName } ) ;
@@ -144,7 +143,7 @@ export class SocketService {
144
143
145
144
const { event, toSend} = this . getEventAndPayload ( msg ) ;
146
145
147
- const relevantSubject : Subject < any > = this . observers [ event ] ;
146
+ const relevantSubject = this . observers [ event ] ;
148
147
if ( relevantSubject ) {
149
148
relevantSubject . next ( toSend ) ;
150
149
}
@@ -165,7 +164,7 @@ export class SocketService {
165
164
* @param msg
166
165
*/
167
166
private getEventAndPayload ( msg : RegistryEvent ) {
168
- let toSend : any ;
167
+ let toSend : ReturnType ;
169
168
let event : EventType ;
170
169
171
170
if ( msg . eventType === EventTypeEnum . NumbersChangedEvent ) {
0 commit comments