Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
Firma de interfaz de TypeScript para el evento onClick en ReactJS

El sitio web oficial de reactjs.org contiene un excelente tutorial introductorio.

Los fragmentos del tutorial están escritos en JavaScript y estoy tratando de convertirlos a TypeScript.

Logré que el código funcionara, pero tengo una pregunta sobre el uso de interfaces.

¿Cuál debería ser la "firma de función" correcta para la devolución de llamada onClick?

¿Hay alguna manera de reemplazar la palabra clave 'cualquiera' en la interfaz IProps_Square con una firma de función explícita?

Cualquier ayuda o sugerencia sería muy apreciada, muchas gracias Russell

índice.html

 <!DOCTYPE html> <html lang="en"> <body> <div id="reactjs-tutorial"></div> </body> </html>

índice.tsx

 import * as React from 'react'; import * as ReactDOM from 'react-dom'; interface IProps_Square { message: string, onClick: any, } class Square extends React.Component < IProps_Square > { render() { return ( <button onClick={this.props.onClick}> {this.props.message} </button> ); } } class Game extends React.Component { render() { return ( <Square message = { 'click this' } onClick = { () => alert('hello') } /> ); } } ReactDOM.render( <Game />, document.getElementById('reactjs-tutorial') );
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La interfaz con accesorios debe ser

 interface IProps_Square { message: string; onClick: React.MouseEventHandler<HTMLButtonElement>; }

Tenga en cuenta también que si usa punto y coma, el separador de elementos de la interfaz es un punto y coma, no una coma.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Hay alguna manera de reemplazar la palabra clave 'cualquiera' en la interfaz IProps_Square con una firma de función explícita?

Simplemente () => void es decir, una función que no toma argumentos y no te importa si devuelve algo.

 import * as React from 'react'; import * as ReactDOM from 'react-dom'; interface IProps_Square { message: string, onClick: () => void, } class Square extends React.Component < IProps_Square > { render() { return ( <button onClick={this.props.onClick}> {this.props.message} </button> ); } } class Game extends React.Component { render() { return ( <Square message = { 'click this' } onClick = { () => alert('hello') } /> ); } } ReactDOM.render( <Game />, document.getElementById('reactjs-tutorial') );

Sin embargo, si necesita el parámetro, el tipo adecuado para él es React.MouseEvent<HTMLElement> , entonces:

 interface IProps_Square { message: string, onClick: (e: React.MouseEvent<HTMLElement>) => void, }
over 4 years ago · Santiago Trujillo Denunciar

0

Excepto React.MouseEvent que puedes usar

 type IProps_Square = { onClick: React.ButtonHTMLAttributes<HTMLButtonElement>["onClick"]; }

o

 type IProps_Square = { onClick: JSX.IntrinsicElements["button"]["onClick"]; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda