From bda275677922e1475de35aef050bf41d8fd6b49f Mon Sep 17 00:00:00 2001 From: KoloMl Date: Thu, 6 Feb 2025 23:57:19 +0400 Subject: [PATCH] Annotating component utils with types --- src/lib/components/base/component-utils.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lib/components/base/component-utils.ts b/src/lib/components/base/component-utils.ts index 768621f..636b8f4 100644 --- a/src/lib/components/base/component-utils.ts +++ b/src/lib/components/base/component-utils.ts @@ -1,19 +1,26 @@ +import type { BaseComponent } from "$lib/components/base/BaseComponent"; + const instanceSymbol = Symbol('instance'); +interface ElementWithComponent extends HTMLElement { + [instanceSymbol]?: BaseComponent; +} + /** + * Get the component from the element, if there is one. * @param {HTMLElement} element - * @return {import('./BaseComponent').BaseComponent|null} + * @return */ -export function getComponent(element) { +export function getComponent(element: ElementWithComponent): BaseComponent | null { return element[instanceSymbol] || null; } /** * Bind the component to the selected element. - * @param {HTMLElement} element The element to bind the component to. - * @param {import('./BaseComponent').BaseComponent} instance The component instance. + * @param element The element to bind the component to. + * @param instance The component instance. */ -export function bindComponent(element, instance) { +export function bindComponent(element: ElementWithComponent, instance: BaseComponent): void { if (element[instanceSymbol]) { throw new Error('The element is already bound to a component.'); }