рдЬрдм lib.d.ts рд╕реЗ рдЗрд╡реЗрдВрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд▓рдмреИрдХ рдХреЛ рдкреНрд░рдХрд╛рд░ рдЗрд╡реЗрдВрдЯ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдИрд╡реЗрдВрдЯ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЯрд╛рд░реНрдЧреЗрдЯ рдЧреБрдг EventTarget рдХрд╛ рд╣реЛрддрд╛ рд╣реИ (рдЬрдмрдХрд┐ рдпрд╣ рдЯрд╛рдЗрдк рдПрд▓реАрдореЗрдВрдЯ / HTMLElement рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
XMLHttpRequest рдСрдмреНрдЬреЗрдХреНрдЯ рднреА currentTarget рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ Element / HTMLElement рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдпрд╣реА рд╡рдЬрд╣ рд╣реЛред рдХреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛?
interface Event<T extends EventTarget> {
/* ... */
currentTarget: T;
/* ... */
}
interface EventListener<T extends EventTarget> {
(evt: Event<T>): void;
}
interface HTMLElement {
/* ... */
addEventListener(type: string, listener: EventListener<HTMLElement>, useCapture?: boolean): void;
}
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛
3 рдЕрдЧрд╕реНрдд 2014 рдХреЛ 13:34 рдкрд░, SaschaNaz рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:
XMLHttpRequest рдСрдмреНрдЬреЗрдХреНрдЯ рднреА currentTarget рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ Element / HTMLElement рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдпрд╣реА рд╡рдЬрд╣ рд╣реЛред рдХреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛?
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╡реЗрдВрдЯ
{
/ * ... _ /
currentTarget: рдЯреА;
/ _ ... * /
}рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╡реЗрдВрдЯрд▓рд┐рд╕реНрдЯ
{
(evt: рдИрд╡реЗрдВрдЯ): рд╢реВрдиреНрдп;
}рдЗрдВрдЯрд░рдлрд╝реЗрд╕ HTMLElement {
/ * ... * /
addEventListener (рдкреНрд░рдХрд╛рд░: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╢реНрд░реЛрддрд╛: EventListener, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ;: рдмреВрд▓рд┐рдпрди): рд╢реВрдиреНрдп;
}
-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рд░ рдШрдЯрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп Element
(http://www.w3.org/TR/DOM-Level-3-Events/#event-types) рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП @SaschaNaz рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рддрд░реНрдЬ рдкрд░ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдкрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ lib.d.ts рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рд╕рдордп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирдП рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЙрд╕рдХреЗ рдХрд╛рд░рдг, рд╣рдо рдЗрд╕ рд╕рдордп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо lib.d.ts рдкреАрдврд╝реА рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдЗрдирдкреБрдЯ рдкрд░ рдкреАрдЖрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрднреА рдХреЗ рд▓рд┐рдП 'Revisit' рдХреЛ рдЯреИрдЧ рдХрд░рдирд╛ - рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рдПрдХ рдорд╣реАрдиреЗ рдореЗрдВ рдкрд┐рдВрдЧ рдХрд░реЗрдВ рдФрд░ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдХрд╣рд╛рдВ рдкрд░ рд╣реИрдВред
рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
interface HTMLElement {
addEventListener(type: string, listener: EventListener<this>, useCapture?: boolean): void;
}
var image: HTMLImageElement;
var video: HTMLVideoElement;
image.addEventListener // receives EventListener<HTMLImageElement> type
video.addEventListener // receives EventListener<HTMLVideoElement> type
рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ # 285 рдФрд░ # 229 рдореЗрдВ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╣рд╛рдп рд╕рдм, рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдерд╛рдореЗред рдореИрдВ Event.target
рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдПрдХ рд▓рдХреНрд╖реНрдп рдПрдХ HTMLElement
ред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ @SaschaNaz рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ "рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛" рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирдпрд╛ рд╣реВрдВ)ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдиреЗ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛: (<HTMLElement>event.target).tagName
@rayshan рдХрд╛ рд╕реБрдЭрд╛рд╡ рдерд╛ рдХрд┐ lib.d.ts
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реАрдзреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рд╕рдЯреАрдХ рд╣реИред рдЕрднреА рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдмрд┐рдирд╛ рдмрд┐рд▓реНрдЯ рдЗрди рд▓реАрдм ( --noLib
) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рдЖрдкрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕реЗ рд▓рдХреНрд╖рд┐рдд рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЕрднреА рдХреНрдпреЛрдВрдХрд┐ DOM рд╕рдмрд╕реЗ рд╕реБрд╕рдВрдЧрдд / рд╕рдВрд░рдЪрд┐рдд / рдкреНрд░рдХрд╛рд░ рд╕реБрд░рдХреНрд╖рд┐рдд / рд▓рдЧрд╛рддрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ APIs рдХрд╛ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ) рдореЗрдВ DOM рдХреЗ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХрдИ рдЪреБрдиреМрддрд┐рдпрд╛рдБ рд╣реИрдВред
рдЕрдм рдЬрдм # 4910 рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
@zhengbli рдореЗрдВ рд▓рд┐рдмрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдХреБрдЫ рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдзрд╛рд░рд┐рдд рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореБрджреНрджреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкреАрдЖрд░рдПрд╕ рдиреЗ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ lib.d.ts рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдпреЛрдЧрджрд╛рди рдкрд░ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рджреА рдЧрдИ рд╣реИ: https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md#contributing -libdts-fix
рдореИрдВ JS onload
FileReader TS2339: Property 'result' does not exist on type 'EventTarget'
рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдФрд░ рдШрдЯрдирд╛ рдкрд░ getSummary()
рд▓рд┐рдП рдПрдХ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА FileReader рдХреЗ onerror
ред
рдореЗрд░рд╛ рдХрд╛рдо-рдХреЗ рдЖрд╕рдкрд╛рд╕, рднрдпрд╛рдирдХ рд▓рд╛рд▓ рд╕реНрдХреНрд╡реАрдЬреАрд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП ;-) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
interface FileReaderEventTarget extends EventTarget {
result:string
}
interface FileReaderEvent extends Event {
target: FileReaderEventTarget;
getMessage():string;
}
рдлрд┐рд░ рдореЗрд░реЗ рдРрдк рдореЗрдВ:
reader.onload = function(fre:FileReaderEvent) {
var data = JSON.parse(fre.target.result);
...
}
рдЙрддреНрдкрдиреНрди рдЬреЗрдПрд╕ рдХреЛрдб рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд╛рдзрд╛рди, рдЕрд╕рд╛рдорд╛рдиреНрдп рдЬреЗрдПрд╕ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, lib.d.ts рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд░рдВрдЯрдЧреЗрдЯ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдиреНрджрд░реНрдн TSJS рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдЙрддреНрдкрдиреНрди webworker.generated.d.ts рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ idea рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рд╕реБрдирддрд╛ рд╣реВрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рджреБрдЦреА рдХрд░рддрд╛ рд╣реИред
рдХреБрдВрдЖред рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореИрдВ рдПрдХ PR https://github.com/Microsoft/TSJS-lib-generator/pull/202 рдмрдирд╛рддрд╛ рд╣реВрдВ
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ Property 'getBoundingClientRect' does not exist on type 'EventTarget'.
ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдЦреИрд░, рдкреАрдЖрд░ рд▓рдЧрднрдЧ 2 рдорд╣реАрдиреЗ рд╕реЗ рд▓рдВрдмрд┐рдд рд╣реИред рдЕрдЧрд░ рдЗрд╕ рдкрд░ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо currentTarget
рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП HTMLInputElement.onchange
(event: Event<HTMLInputElement>) => void
рдЯрд╛рдЗрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ event.currentTarget.value
рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд╕реНрдЯ рдХреЗ рдХрд╛рдо рдХрд░реЗрдВред рдпрд╛ рдПрдиреЛрдЯреЗрд╢рди рдЯрд╛рдЗрдк рдХрд░реЗрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдирд╣реАрдВред
рдпрд╣ рдЬреЗрдиреЗрд░рд┐рдХ рдХреА рд╡рдЬрд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдиреЗрд░рд┐рдХ рдбрдмрд▓реНрд╕ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ issue
рдХреНрдпрд╛ рдпреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд░рд┐рдПрдХреНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ?
lib.d.ts рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХрдорд╛рдВрдб рдореЗрдВ --diagnostics
рдЬреЛрдбрд╝рдХрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@felixfbecker рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рддрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдирд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдЯрд╛рдЗрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЫреЛрдбрд╝ рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕реАрд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХрдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рд╣реИрдВред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╕рдВрд╕реНрдХрд░рдг 1.18.0 (1.18.0) рдореЗрдВ рдореМрдЬреВрдж рд╣реИ
рдирдорд╕реНрддреЗ,
рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ ... рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рддрдп рдирд╣реАрдВ рд╣реИред
рдЬрдм рдореИрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдгреАрдп 4 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрджреНрджрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдФрд░, рдЬрдмрдХрд┐ рдПрдирдЬреА рд╕рд░реНрд╡ рдХреА рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП .. рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдЙрддреНрдкрд╛рджрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрдЫ рдкреНрд░рдЧрддрд┐ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдбреЛрдо рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред
рдпрд╣ рдореБрджреНрджрд╛ рдЪрд╛рд░ рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рд╣реИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреАрдЖрд░ рд▓рдЧрднрдЧ рдПрдХ рд╡рд░реНрд╖ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдХрд┐рд╕реА рднреА рд╕рдордп рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓рдЧрднрдЧ 4 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Https://github.com/Microsoft/TSJS-lib-generator/pull//207 рдореЗрдВ рдПрдХ рдлрд┐рдХреНрд╕ рдЙрдкрд▓рдмреНрдз рд╣реИ
рд▓реЗрдХрд┐рди @saschanaz рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд╡рд░реБрджреНрдз рд╣реИред
11 рдкрд░ рдкрд╛рд░реНрдЯреА рдЯреЛрдирд┐рдВрдЧ рдХрд░рдирд╛ - рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдХреЛ рдЕрдирд▓реЛрдб рдХрд░реЗрдВ:
confirmationMessage(event: BeforeUnloadEvent): any {
const activeElement: HTMLElement = <HTMLElement>(<Document>event.target).activeElement;
: Dancing_men:
рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛
readonly currentTarget: Element | null;
readonly target: Element | null;
UIEvent
рд╣реА? рдпрд╣ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдХреЛ рдЦреБрд╢ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдмрд┐рдирд╛ | null
рдХрд┐рд╕реА UIEvent рдкрд░ рднреА рджреЛрдиреЛрдВ рд╣рдореЗрд╢рд╛ рд╕реЗрдЯ рд░рд╣рддреЗ рд╣реИрдВ
рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди event.target.value рдЯрд╛рдЗрдк рдЪреЗрдХрд░ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рднрд▓реЗ рд╣реА - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ - рдПрдХ рдкрд╛рда рдЗрдирдСрдЙрдЯ рдХреЛ рд╣рдореЗрд╢рд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рднреА рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рдХрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛:
this.url = (<any>event).target.result;
рдЗрд╡реЗрдВрдЯ рдФрд░ EventTarget рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
interface Event<C = any, S = any, T = any> {
...
currentTarget: EventTarget<C> | null;
srcElement: EventTarget<S> | null;
target: EventTarget<T> | null;
...
}
interface EventTarget<T = any> {
...
}
рдореИрдВ FileReader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХрд▓рд╛рдХрд╛рд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ
const fileReader = new FileReader();
fileReader.onload = $ev => {
console.log($ev); // type ProgressEvent
console.log($ev.target); // type FileReader
// console.log($ev.target.result); // editor and autocomplete doesn't show any error
console.log(($ev.target as FileReader).result); // casting compiles fine
};
fileReader.readAsText(file);
рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? event.target
рд╣рд░ рдмрд╛рд░ рдпрд╛ рдХрд┐рд╕реА рднреА рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдмрд▓ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд░рдЦрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ @gautamkrishnar рдиреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛)ред рдпрд╣ рднреА 2014 рдХреЗ рдмрд╛рдж рд╕реЗ рдЦреБрд▓рд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, 6 рд╡реЗрдВ рдЬрдиреНрдорджрд┐рди рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
рд╣рд╛рдВ, рдпрд╣ рд╕рдВрднрд╡рддрдГ DOM, JSX, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдирдВрдмрд░ 1 рджрд┐рди рдХрд╛ рдЙрдкрджреНрд░рд╡ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рджреИрдирд┐рдХ рдЙрдкрджреНрд░рд╡ рд╣реИ - рдФрд░ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдорд┐рд▓рд┐рдпрди рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдкреВрд░реЗ рджрд┐рди рд╣реИред
рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреЛрдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред
Event.target рдХреЗ рд▓рд┐рдП рднреАред рдЬрдм рдмрдЪреНрдЪреЗ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдХрд┐рд╕реА рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЬрдм рдХрдИ рдмрдЪреНрдЪреЗ рд╣реЛрдВрдЧреЗред Event.target.tagName рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ classList рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рд╣реИ рдЬреЛ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ .... рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдЯреИрдЧрдиреЗрдо / рдХреНрд▓рд╛рд╕рд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯреЗрд▓реАрд╕реЗрдВрд╕ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ EventTarget рдХреЛ HTMLElement рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ JS
onload
FileReaderTS2339: Property 'result' does not exist on type 'EventTarget'
рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдФрд░ рдШрдЯрдирд╛ рдкрд░getSummary()
рд▓рд┐рдП рдПрдХ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА FileReader рдХреЗonerror
редрдореЗрд░рд╛ рдХрд╛рдо-рдХреЗ рдЖрд╕рдкрд╛рд╕, рднрдпрд╛рдирдХ рд▓рд╛рд▓ рд╕реНрдХреНрд╡реАрдЬреАрд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП ;-) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
рдлрд┐рд░ рдореЗрд░реЗ рдРрдк рдореЗрдВ:
рдЙрддреНрдкрдиреНрди рдЬреЗрдПрд╕ рдХреЛрдб рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд╛рдзрд╛рди, рдЕрд╕рд╛рдорд╛рдиреНрдп рдЬреЗрдПрд╕ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, lib.d.ts рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВред