// infer correct event type
expectType<EventTarget | null>(e.target)
}}
+ onInputCapture={e => {
+ expectType<EventTarget | null>(e.target)
+ }}
+ onInputOnce={e => {
+ expectType<EventTarget | null>(e.target)
+ }}
+ onInputOnceCapture={e => {
+ expectType<EventTarget | null>(e.target)
+ }}
+ onInputCaptureOnce={e => {
+ expectType<EventTarget | null>(e.target)
+ }}
/>
)
view: SVGAttributes
}
-export interface Events {
+export interface BaseEvents {
// clipboard events
onCopy: ClipboardEvent
onCut: ClipboardEvent
onTransitionstart: TransitionEvent
}
+type EventModifiers = 'Capture' | 'Once' | `OnceCapture` | 'CaptureOnce'
+
+type Events = BaseEvents & {
+ [K in keyof BaseEvents as `${K & string}${EventModifiers}`]: BaseEvents[K]
+}
+
type EventHandlers<E> = {
[K in keyof E]?: E[K] extends (...args: any) => any
? E[K]