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

131
Vistas
¿Cuál sería el tipo correcto a utilizar en este caso?

Estoy tratando de crear el componente de encabezado y cuando agrego el accesorio "testId", obtengo el siguiente tipo. mensaje -->

Escriba '{ niños: ReactNode; ID de prueba: cadena | indefinido; }' no se puede asignar al tipo 'IntrinsicAttributes & ClassAttributes & HTMLAttributes'. La propiedad 'testId' no existe en el tipo 'IntrinsicAttributes & ClassAttributes & HTMLAttributes'

Pero cuando uso "id" en lugar de "testId", no obtengo un error de tipo, lo cual es extraño. Me gustaría usar "testId" para el accesorio de encabezado y no estoy seguro de qué tipo debo asignar. ¿Qué me estoy perdiendo? https://codesandbox.io/s/flamboyant-leftpad-l3bhj?file=/src/App.tsx

 import "./styles.css"; import * as React from "react"; interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> { headingLevel: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p"; children?: React.ReactNode; testId?: string; } const Heading: React.FunctionComponent<HeadingProps> = ({ headingLevel: HeadingLevel = "h1", children, testId }: HeadingProps) => { return <HeadingLevel testId={testId}>{children}</HeadingLevel>; }; const App: React.FC<{ headingText: string; description: string }> = () => ( <div> <Heading headingLevel="h2" testId="test-heading"> Hello World! </Heading> </div> ); export default App;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema está en la siguiente línea:

 return <HeadingLevel testId={testId}>{children}</HeadingLevel>;

testId no es un atributo HTML válido. Debe usar testId como accesorio de encabezado y usar un JSON para atributos personalizados en el componente HeadingLevel.

 import "./styles.css"; import * as React from "react"; interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> { headingLevel: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p"; children?: React.ReactNode; testId?: string; } const Heading: React.FunctionComponent<HeadingProps> = ({ headingLevel: HeadingLevel = "h1", children, testId }: HeadingProps) => { const attrs = {"testId": testId} return <HeadingLevel {...attrs}>{children}</HeadingLevel>; }; const App: React.FC<{ headingText: string; description: string }> = () => ( <div> <Heading headingLevel="h2" testId="test-heading"> Hello World! </Heading> </div> ); export default App;
about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay un error tipográfico en su acceso. Usted especifica testId en la interfaz, pero en la implementación intenta acceder a testingId que no coincide con la firma de su interfaz. Además, el uso de una id normal funcionó porque es un atributo válido para todos los elementos. Aquí está el código corregido:

 import "./styles.css"; import * as React from "react"; interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> { headingLevel: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p"; children?: React.ReactNode; testId?: string; } const Heading: React.FunctionComponent<HeadingProps> = ({ headingLevel: HeadingLevel = "h1", children, testId // typo was here }: HeadingProps) => { return <HeadingLevel>{children}</HeadingLevel>; }; const App: React.FC<{ headingText: string; description: string }> = () => ( <div> <Heading headingLevel="h2" testId="test-heading"> {/* typo was here */} Hello World! </Heading> </div> ); export default App;

Vínculo de juegos de TypeScript

about 4 years ago · Juan Pablo Isaza 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