diff --git a/src/types/dom-events.ts b/src/types/dom-events.ts new file mode 100644 index 0000000..8b505e7 --- /dev/null +++ b/src/types/dom-events.ts @@ -0,0 +1,21 @@ +import type { KeysWhere } from './utils.js'; + +export type AnimationEventName = KeysWhere; +export type ClipboardEventName = KeysWhere; +export type CompositionEventName = KeysWhere; +export type DragEventName = KeysWhere; +export type ErrorEventName = KeysWhere; +export type EventName = KeysWhere; +export type FocusEventName = KeysWhere; +export type FormDataEventName = KeysWhere; +export type InputEventName = KeysWhere; +export type KeyboardEventName = KeysWhere; +export type MouseEventName = KeysWhere; +export type PointerEventName = KeysWhere; +export type ProgressEventName = KeysWhere; +export type SecurityPolicyViolationEventName = KeysWhere; +export type SubmitEventName = KeysWhere; +export type TouchEventName = KeysWhere; +export type TransitionEventName = KeysWhere; +export type UIEventName = KeysWhere; +export type WheelEventName = KeysWhere; diff --git a/src/types/index.ts b/src/types/index.ts index e5a218f..32b8b28 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -2,6 +2,7 @@ export * from './arrays.js'; export * from './branded.js'; export * from './common.js'; export * from './date-time.js'; +export * from './dom-events.js'; export * from './functions.js'; export * from './numbers.js'; export * from './objects.js'; diff --git a/src/types/utils.ts b/src/types/utils.ts index e8bf4f1..cfd12b2 100644 --- a/src/types/utils.ts +++ b/src/types/utils.ts @@ -84,7 +84,7 @@ export type RemoveNever = { * Return a list of keys where the property value match the `DataType`. */ export type KeysWhere = Key extends PropertyKey - ? DataType extends Type[Key] + ? Type[Key] extends DataType ? Key : never : never;