Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

313
Views
¿Por qué se permiten los atributos no estándar de kebab-case mientras que otros no? ¿Y cómo definir tipos como este en TypeScript?

El uso de foo como atributo genera un error:

 // App.tsx // 👇 throws const App = () => <div foo></div> export default App
 Type '{ foo: true; }' is not assignable to type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'. Property 'foo' does not exist on type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'.ts(2322)

Pero usar foo-foo está bien, ¿por qué?

 // App.tsx // 👇 no error is thrown const App = () => <div foo-foo></div> export default App

Y lo más importante, ¿cómo definir tipos como este en TypeScript? es decir, solo permitir atributos estándar o de kebab-case.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La respuesta está en la sección JSX del Manual de mecanografiado :

Si un nombre de atributo no es un identificador JS válido (como un atributo data-* ), no se considera un error si no se encuentra en el tipo de atributos del elemento.

Toda la sección sobre JSX es una lectura muy esclarecedora.

Me temo que la respuesta a la pregunta "cómo definir tipos como este en TypeScript" es... No lo hacemos. La compatibilidad con JSX está integrada en el compilador. Sin embargo, hay muchas cosas interesantes que podemos personalizar.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!