diff --git a/.changeset/clean-impalas-study.md b/.changeset/clean-impalas-study.md new file mode 100644 index 00000000..a2456367 --- /dev/null +++ b/.changeset/clean-impalas-study.md @@ -0,0 +1,5 @@ +--- +'@open-wc/scoped-elements': patch +--- + +Add constructor to ScopedElementsHost type so that base constructors have the same return type as extensions. See [TypeScript issue](https://github.com/microsoft/TypeScript/issues/40110). diff --git a/packages/scoped-elements/src/types.d.ts b/packages/scoped-elements/src/types.d.ts index 671bcf18..dfd65346 100644 --- a/packages/scoped-elements/src/types.d.ts +++ b/packages/scoped-elements/src/types.d.ts @@ -1,11 +1,12 @@ -import { Constructor } from "@open-wc/dedupe-mixin"; -import { LitElement } from "lit-element"; +import { Constructor } from '@open-wc/dedupe-mixin'; +import { LitElement } from 'lit-element'; export type ScopedElementsMap = { - [key: string]: typeof HTMLElement; -} + [key: string]: typeof HTMLElement; +}; export declare class ScopedElementsHost { + constructor(...args: any[]); /** * Obtains the scoped elements definitions map */ @@ -24,9 +25,11 @@ export declare class ScopedElementsHost { /** * Defines a scoped element */ - defineScopedElement(tagName: string, klass: Constructor): void + defineScopedElement(tagName: string, klass: Constructor): void; } -declare function ScopedElementsMixinImplementation>(superclass: T): T & Constructor & typeof ScopedElementsHost +declare function ScopedElementsMixinImplementation>( + superclass: T, +): T & Constructor & typeof ScopedElementsHost; export type ScopedElementsMixin = typeof ScopedElementsMixinImplementation;