Lingua-e
← Errores
JavaScript

Qué significa TS2344: Violación de restricción genérica y cómo solucionarlo

Referencia del error

TS2344: Violación de restricción genérica

Lenguaje

JavaScript

Severidad

Media

Cuándo ocurre

TypeScript reporta este error cuando un argumento de tipo no satisface las restricciones declaradas para un parámetro de tipo genérico.

Posibles soluciones

Agrega una restricción extends al parámetro genérico: <T extends SomeInterface>. Estrecha la restricción a la forma mínima requerida. Si la función debe aceptar cualquier tipo, evita acceder a propiedades específicas y usa guardas de tipo en su lugar.

Más detalles

TypeScript reporta este error cuando un argumento de tipo no satisface las restricciones declaradas para un parámetro de tipo genérico. Las restricciones se declaran con 'extends' y limitan qué tipos pueden usarse como argumentos de tipo.

Por qué ocurre

  • Acceder a una propiedad en un tipo genérico T sin restringir T para que tenga esa propiedad.
  • Pasar un argumento de tipo que no implementa la interfaz requerida.
  • Usar tipos condicionales o mapeados que requieren restricciones específicas.

Posibles soluciones

Agrega una restricción extends al parámetro genérico: <T extends SomeInterface>. Estrecha la restricción a la forma mínima requerida. Si la función debe aceptar cualquier tipo, evita acceder a propiedades específicas y usa guardas de tipo en su lugar.

Ejemplos

JavaScript

Código que causa el error

function getLength<T>(value: T): number {
  return value.length; // T has no 'length' constraint
}

Error en la terminal

error TS2339: Property 'length' does not exist on type 'T'.

Código corregido

function getLength<T extends { length: number }>(value: T): number {
  return value.length; // works for arrays, strings, etc.
}

Practica en inglés

¿Cómo le explicarías un TS2344: Generic Constraint Violation a un compañero dev? Elige la frase correcta:

"I hit an error...

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis