js removeEventListener 질문드립니다..!

조건에 따라 removeEventListener 를 사용해서 특정 이벤트를 지워야하는 작업이 필요한데

리스너함수에 반드시 인자를 넘겨줘야해서 익명함수로 작성해야합니다.

문제는 익명함수는 removeEventListener가 작동하지 않는다는 점인데요…

예를들어

 addOrRemoveLisener(state: boolean, listener: any) {

    if (!this.checkState(state)) {

      this.el.removeEventListener('mousedown', listener);

      return;

    }

    this.el.addEventListener('mousedown', listener);

  }



move(state: boolean) { this.addOrRemoveLisener(state, (e)=> this.addMouseEvent(e,'move')); } 

size(state: boolean) { this.addOrRemoveLisener(state, (e)=> this.addMouseEvent(e,'size')); }



예를 들어 이런 코드가 있다고 할때 this.addMouseEvent가 위 코드처럼 반드시 인자를 받아야되는 상황일땐 무조건 익명함수를 사용할 수 밖에 없는데 이런 경우엔 어떻게 해야하나요??

기명함수로 작성하면 인자를 넘길 수 없어서 문제입니다…

이렇게 하는 건 어떨까요?

createAttachableListener(eventType: string): any {
  return (e) => this.addMouseEvent(e, eventType);
}

addOrRemoveListener(state: boolean, listener: any): void {
  if (!this.checkState(state)) 
    this.el.removeEventListener('mousedown', listener);
  else 
    this.el.addEventListener('mousedown', listener);
}

move(state: boolean): void { 
  this.addOrRemoveListener(state, this.createAttachableListener('move')); 
} 

size(state: boolean): void { 
  this.addOrRemoveListener(state, this.createAttachableListener('size'));
} 

이렇게 하면 createAttachableListener가 기존의 익명함수 코드를 생성해 줄 겁니다.
다만 createAttachableListener의 반환 타입이 any인 게 마음에 걸리네요.