Typed Custom Elements is a collection of TypeScript types to help you author type-safe Web Components, with proper type checking for custom elements, their constructors, and the custom elements registry.
- ✅ Typed custom element class definitions
- ✅ Typed static properties and lifecycle methods
- ✅ Typed custom element constructors
- ✅ Type-safe interaction with the Custom Elements Registry
- ✅ Zero dependencies
- ✅ ESM compatible
npm install typed-custom-elements
import type { CustomElement } from "typed-custom-elements"
class MyElement extends HTMLElement implements CustomElement {
// type safety and code completion for static propertes, lifecycle methods, etc.
static formAssociated = true
static observedAttributes = ["name"]
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {
// type-safe callback handling
}
}
import type { CustomElementConstructor } from "typed-custom-elements"
const MyElementConstructor: CustomElementConstructor = class extends HTMLElement {
// type safety and code completion for static propertes, lifecycle methods, etc.
}
import type { CustomElementRegistry } from "typed-custom-elements"
declare const customElements: CustomElementRegistry
// type-safe custom element registration
customElements.define('my-element', class extends HTMLElement {
// type safety, code completion, you get the point
})
Working with Web Components in TypeScript often means relying on implicit or loosely typed structures. This package brings clarity and confidence to your component authoring by enforcing:
- Proper typing for lifecycle callbacks.
- Static property inference (
formAssociated
,observedAttributes
). - Safer registration and instantiation via constructors and registries.
This project is licensed under the MIT No Attribution License.