Definitelytyped: React.SyntheticEvent.target рдХреЛ T рдкрд░ рдЬреЗрдиреЗрд░рд┐рдХ рдмрдирд╛рдПрдВ, React.SyntheticEvent.currentTarget рдХреЛ рдирд╣реАрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рд╕рд┐рддре░ 2016  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: DefinitelyTyped/DefinitelyTyped

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдХреЗ SyntheticEvent рд▓рд┐рдП рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ 2.0 рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

interface SyntheticEvent<T> {
    currentTarget: EventTarget & T;
    target: EventTarget;
}

рдкреНрд░рддрд┐рдмрджреНрдз a13fa7abf55daedf25b31258b908548f55962c7a рдХреЗ рдЕрдиреБрд╕рд╛рд░, target рдореВрд▓ рд░реВрдк рд╕реЗ EventTarget & T , рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди (рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░) рдЧрд▓рддреА рд╕реЗ 5607f54defce88bc52a0440288f434cafffdb5ce рдореЗрдВ рд╡рд┐рд▓рдп рдХреЗ рджреМрд░рд╛рди рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд░реНрддрдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░реА-2.0 рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдПрдХреНрдЯ рдХреЛрдб рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ) рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдн рдХреЗ (рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб event.target рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЕрднреА рднреА рдкреВрд░реНрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ -2.0 рдХреЛрдб рдЬреИрд╕реЗ (event.target as any).value , рдХреНрдпреЛрдВрдХрд┐ event.target рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдПрдХ рдкреИрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ SyntheticEvent.target рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдбреА-рдЬреЗрдирд░реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд▓рдХреНрд╖реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдХрдо рдореВрд▓реНрдп рдХрд╛ рд╣реИред
рд▓рдХреНрд╖реНрдп рдШрдЯрдирд╛ рдХреА рдЙрддреНрдкрддреНрддрд┐ рд╣реИ (рдЬрд┐рд╕рдХреА рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд▓рд┐рдВрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрд╡рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)
currentTarget рд╡рд╣ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛рд╕реЗрдЯ рдпрд╛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рдВрд▓рдЧреНрди рдХреА рд╣реИрдВ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп рдХреЗ рдмрдЬрд╛рдп рд▓рдХреНрд╖реНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдПрдХ рд╢реБрд░реБрдЖрддреА рдЧрд▓рддреА рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдХрд╛рдЯ рджреЗрдЧреАред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  handleTabClick = (e: React.SyntheticEvent<HTMLLinkElement>) => {
    e.preventDefault()
    // !!! e.target.dataset is empty if user clicked the <span>, not the <a> !!!
    // !!! how can you type e.target? User might also have clicked the <a> if it has padding !!!
    // you have to use currentTarget, and it is the element that you know the type for sure
    if (e.currentTarget.dataset['closable'] === 'true') {
      this.close()
    }
  }

render() {
  return <a onClick={this.handleTabClick} data-closable="true">
      <span className="fatty">Click me!</span>
   </a>
}

рдпрд╣ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорд░реНрдЬ рдХрд┐рдП рдЧрдП 'рдлрд┐рдХреНрд╕' рдХреЗ рд╕рд╛рде, e.currentTarget рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдЯрд╛рдЗрдк рдПрд░рд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛) рдФрд░ e.target рдХреЛ рдЕрдм HTMLLinkElement рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред (рдореИрдВрдиреЗ рд╕реНрдкреИрди рдХреЛ рдЕрдВрджрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо SyntheticEvent рдореЗрдВ рджреВрд╕рд░рд╛ рдЬреЗрдиреЗрд░рд┐рдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдХреНрд╖реНрдп рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ (рдИрд╡реЗрдВрдЯ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрдЪреНрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХрдо рдореВрд▓реНрдп рдХрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рд╛рдордХ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╕рдВрднрд╡рдд: рд╡рд┐рд▓рдп рдХреЗ рджреМрд░рд╛рди рдХреА рдЧрдИ рдЧрд▓рддреА рд╣реИред рдХреГрдкрдпрд╛ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред

рджреЗрдЦреЗрдВ #11041, #10784 рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред рдПрдХ рд░рд╣рд╕реНрдп рд╣реИ рдХрд┐ рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рддрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред

рдЖрдк рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд▓рдХреНрд╖реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдХрдо рдореВрд▓реНрдп рдХрд╛ рд╣реИред
рд▓рдХреНрд╖реНрдп рдШрдЯрдирд╛ рдХреА рдЙрддреНрдкрддреНрддрд┐ рд╣реИ (рдЬрд┐рд╕рдХреА рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд▓рд┐рдВрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрд╡рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)
currentTarget рд╡рд╣ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛рд╕реЗрдЯ рдпрд╛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рдВрд▓рдЧреНрди рдХреА рд╣реИрдВ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп рдХреЗ рдмрдЬрд╛рдп рд▓рдХреНрд╖реНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдПрдХ рд╢реБрд░реБрдЖрддреА рдЧрд▓рддреА рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдХрд╛рдЯ рджреЗрдЧреАред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  handleTabClick = (e: React.SyntheticEvent<HTMLLinkElement>) => {
    e.preventDefault()
    // !!! e.target.dataset is empty if user clicked the <span>, not the <a> !!!
    // !!! how can you type e.target? User might also have clicked the <a> if it has padding !!!
    // you have to use currentTarget, and it is the element that you know the type for sure
    if (e.currentTarget.dataset['closable'] === 'true') {
      this.close()
    }
  }

render() {
  return <a onClick={this.handleTabClick} data-closable="true">
      <span className="fatty">Click me!</span>
   </a>
}

рдпрд╣ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорд░реНрдЬ рдХрд┐рдП рдЧрдП 'рдлрд┐рдХреНрд╕' рдХреЗ рд╕рд╛рде, e.currentTarget рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдЯрд╛рдЗрдк рдПрд░рд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛) рдФрд░ e.target рдХреЛ рдЕрдм HTMLLinkElement рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред (рдореИрдВрдиреЗ рд╕реНрдкреИрди рдХреЛ рдЕрдВрджрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо SyntheticEvent рдореЗрдВ рджреВрд╕рд░рд╛ рдЬреЗрдиреЗрд░рд┐рдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдХреНрд╖реНрдп рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ (рдИрд╡реЗрдВрдЯ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрдЪреНрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХрдо рдореВрд▓реНрдп рдХрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рд╛рдордХ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдмрдЪреНрдЪреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реИ, DOMAttributes<SomeType> , рдЖрдкрдХреЛ onClick : MouseEventHandler<SomeType> рдорд┐рд▓рддрд╛ рд╣реИ, рдлрд┐рд░ EventHandler<MouseEvent<SomeType>> рд╕рд╛рде рдорд┐рд▓рддрд╛ рд╣реИ

    interface EventHandler<E extends SyntheticEvent<any>> {
        (event: E): void;
    }

рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд▓рдХреНрд╖реНрдп рдХреЛ currentTarget рд╕реЗ рдЕрд▓рдЧ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдСрдирдХреНрд▓рд┐рдХ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдИрд╡реЗрдВрдЯ (рдЙрд░реНрдл рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп) рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛, рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@bbenezech

handleTabClick = (e: React.SyntheticEvent<HTMLLinkElement>) => { ... }

рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

handleTabClick = (e: React.FormEvent<HTMLLinkElement>) => { ... }

рдЖрдкрдХреЗ рдкрд╛рд╕ ClipboardEvent<T> , CompositionEvent<T> , DragEvent<T> , FocusEvent<T> , KeyboardEvent<T> ...
рд╕рд┐рдВрдереЗрдЯрд┐рдХрдЗрд╡реЗрдВрдЯ рдирд┐рдореНрди рд╕реНрддрд░ рдХреА рдЪреАрдЬ рд╣реИред

рдпрд╣ рдЕрднреА рднреА @types NPM рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдРрд╕рд╛ рд╣реА рд╣реИред рдЗрд╕реЗ рдХрдм рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ

рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред #12239 рджреЗрдЦреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

csharpner picture csharpner  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

variousauthors picture variousauthors  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

[рдбреА3] рдореЙрдбреНрдпреВрд▓ 'рдбреА3-рд╕реНрдХреЗрд▓' рдкрд╣рд▓реЗ рд╣реА 'рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯрдХреВрд▓' рдирд╛рдо рдХреЗ рдПрдХ рд╕рджрд╕реНрдп рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рдЪреБрдХрд╛ рд╣реИред рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрдирдГ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
matt-senseye picture matt-senseye  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jrmcdona picture jrmcdona  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Loghorn picture Loghorn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ