javascript - Aký typ TypeScriptu je udalosť Angular2


Ak mám nasledujúce tlačidlo v html súbore

<button (click)="doSomething('testing', $event)">Do something</button>

Tiež, v príslušnej komponente mám túto funkciu

doSomething(testString: string, event){
    event.stopPropagation();
    console.log(testString + ': I am doing something');
}

Existuje vhodný typ, ktorý by mal byť priradený k vstupu $event? Parameter event sám o sebe je objekt, ALE ak ho priradím k typu objekt, dostanem chybu

Vlastnosť 'stopPropogation' neexistuje na type objekt

Takže, čo považuje Typescript za vstup $event?

Odpoveď č. 1

Ako navrhol @AlexJ

Udalosť, ktorou ste prešli $event, je DOM udalosť, preto môžete použiť EventName ako typ.

Vo vašom prípade je táto udalosť MouseEvent a dokumentácia hovorí, citujem

Rozhranie MouseEvent predstavuje udalosti, ktoré nastávajú v dôsledku interakcie používateľa so zariadením na ukazovanie (napríklad myšou). Bežné udalosti využívajúce toto rozhranie zahŕňajú click, dblclick, mouseup, mousedown.

Vo všetkých týchto prípadoch dostanete MouseEvent.

Ďalší príklad: ak máte tento kód

<input type="text" (blur)="event($event)"

Keď sa spustí udalosť, dostanete FocusEvent.

Takže to môžete urobiť naozaj jednoducho, záznam do konzoly udalosti a uvidíte správu podobnú tejto, ktorá bude mať názov udalosti

FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…}

Vždy môžete navštíviť dokumentáciu pre zoznam existujúcich udalostí.

Upraviť

Môžete si tiež skontrolovať TypeScript dom.generated.d.ts so všetkými prevedenými typmi. Vo vašom prípade je stopPropagation() súčasťou Event, ktorý je rozšírený o MouseEvent.

Odpoveď č. 2

Niektoré bežne používané udalosti a ich príslušné názvy (MouseEvent, FocusEvent, TouchEvent, DragEvent, KeyboardEvent):

| MouseEvent | FocusEvent |  TouchEvent | DragEvent | KeyboardEvent |
|:----------:|:----------:|:-----------:|:---------:|:-------------:|
|    click   |    focus   |  touchstart |    drag   |    keypress   |
|   mouseup  |    blur    |  touchmove  |    drop   |     keyup     |
| mouseleave |   focusin  | touchcancel |  dragend  |    keydown    |
|  mouseover |  focusout  |   touchend  |  dragover |               |

Generická udalosť je spojená s:

  • zatvoriť
  • zrušiť
  • zmeniť
  • neplatný
  • hrať
  • resetovať
  • posunúť
  • koniec rolovania
  • vybrať
  • prepínač
  • čakanie

Ak sa budete prehrabávať v repozitári Typescriptu, dom.generated.d.ts poskytuje mapovanie všetkých globálnych obslúh udalostí (zásluha patrí Ericovej odpovedi) v rozhraní GlobalEventHandlersEventMap:

interface GlobalEventHandlersEventMap {
    "abort": UIEvent;
    "animationcancel": AnimationEvent;
    "animationend": AnimationEvent;
    "animationiteration": AnimationEvent;
    "animationstart": AnimationEvent;
    "auxclick": MouseEvent;
    "beforeinput": InputEvent;
    "blur": FocusEvent;
    "cancel": Event;
    "canplay": Event;
    "canplaythrough": Event;
    "change": Event;
    "click": MouseEvent;
    "close": Event;
    "compositionend": CompositionEvent;
    "compositionstart": CompositionEvent;
    "compositionupdate": CompositionEvent;
    "contextmenu": MouseEvent;
    "copy": ClipboardEvent;
    "cuechange": Event;
    "cut": ClipboardEvent;
    "dblclick": MouseEvent;
    "drag": DragEvent;
    "dragend": DragEvent;
    "dragenter": DragEvent;
    "dragleave": DragEvent;
    "dragover": DragEvent;
    "dragstart": DragEvent;
    "drop": DragEvent;
    "durationchange": Event;
    "emptied": Event;
    "ended": Event;
    "error": ErrorEvent;
    "focus": FocusEvent;
    "focusin": FocusEvent;
    "focusout": FocusEvent;
    "formdata": FormDataEvent;
    "gotpointercapture": PointerEvent;
    "input": Event;
    "invalid": Event;
    "keydown": KeyboardEvent;
    "keypress": KeyboardEvent;
    "keyup": KeyboardEvent;
    "load": Event;
    "loadeddata": Event;
    "loadedmetadata": Event;
    "loadstart": Event;
    "lostpointercapture": PointerEvent;
    "mousedown": MouseEvent;
    "mouseenter": MouseEvent;
    "mouseleave": MouseEvent;
    "mousemove": MouseEvent;
    "mouseout": MouseEvent;
    "mouseover": MouseEvent;
    "mouseup": MouseEvent;
    "paste": ClipboardEvent;
    "pause": Event;
    "play": Event;
    "playing": Event;
    "pointercancel": PointerEvent;
    "pointerdown": PointerEvent;
    "pointerenter": PointerEvent;
    "pointerleave": PointerEvent;
    "pointermove": PointerEvent;
    "pointerout": PointerEvent;
    "pointerover": PointerEvent;
    "pointerup": PointerEvent;
    "progress": ProgressEvent;
    "ratechange": Event;
    "reset": Event;
    "resize": UIEvent;
    "scroll": Event;
    "scrollend": Event;
    "securitypolicyviolation": SecurityPolicyViolationEvent;
    "seeked": Event;
    "seeking": Event;
    "select": Event;
    "selectionchange": Event;
    "selectstart": Event;
    "slotchange": Event;
    "stalled": Event;
    "submit": SubmitEvent;
    "suspend": Event;
    "timeupdate": Event;
    "toggle": Event;
    "touchcancel": TouchEvent;
    "touchend": TouchEvent;
    "touchmove": TouchEvent;
    "touchstart": TouchEvent;
    "transitioncancel": TransitionEvent;
    "transitionend": TransitionEvent;
    "transitionrun": TransitionEvent;
    "transitionstart": TransitionEvent;
    "volumechange": Event;
    "waiting": Event;
    "webkitanimationend": Event;
    "webkitanimationiteration": Event;
    "webkitanimationstart": Event;
    "webkittransitionend": Event;
    "wheel": WheelEvent;
}

Súvisiace články