diff --git a/configs/eslint-config-compass/index.js b/configs/eslint-config-compass/index.js index a7f2479d9b6..f48e8aa0d14 100644 --- a/configs/eslint-config-compass/index.js +++ b/configs/eslint-config-compass/index.js @@ -27,7 +27,6 @@ const extraTsRules = { '@typescript-eslint/no-base-to-string': 'warn', '@typescript-eslint/unbound-method': 'warn', '@typescript-eslint/no-duplicate-type-constituents': 'warn', - '@typescript-eslint/no-unsafe-declaration-merging': 'warn', }; const tsRules = { diff --git a/packages/compass-components/src/components/guide-cue/guide-cue-service.ts b/packages/compass-components/src/components/guide-cue/guide-cue-service.ts index 45eb959722e..9443a6108e3 100644 --- a/packages/compass-components/src/components/guide-cue/guide-cue-service.ts +++ b/packages/compass-components/src/components/guide-cue/guide-cue-service.ts @@ -16,29 +16,14 @@ export type ShowCueEventDetail = CustomEvent<{ groupId?: GroupName; }>; +type CustomEventListenerOrEventListenerObject = + | { handleEvent: (evt: E) => void } + | ((evt: E) => void); + interface GuideCueEventMap { 'show-cue': ShowCueEventDetail; } -export interface GuideCueService extends EventTarget { - addEventListener( - type: K, - listener: (this: GuideCueEventMap, ev: GuideCueEventMap[K]) => void - ): void; - addEventListener( - type: string, - listener: EventListenerOrEventListenerObject - ): void; - removeEventListener( - type: K, - listener: (this: GuideCueEventMap, ev: GuideCueEventMap[K]) => void - ): void; - removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject - ): void; -} - export type Cue = { groupId?: GroupName; step: number; @@ -261,6 +246,30 @@ export class GuideCueService extends EventTarget { return this.onNext(); } } + + addEventListener( + type: K, + listener: CustomEventListenerOrEventListenerObject< + GuideCueEventMap[K] + > | null + ): void { + return super.addEventListener( + type, + listener as EventListenerOrEventListenerObject + ); + } + + removeEventListener( + type: K, + listener: CustomEventListenerOrEventListenerObject< + GuideCueEventMap[K] + > | null + ): void { + return super.removeEventListener( + type, + listener as EventListenerOrEventListenerObject + ); + } } export const guideCueService = new GuideCueService(