Lingua-e
JavaScript

¿Qué significa TS2344: Violación de restricción genérica?

← Errores

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.

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ómo solucionarlo

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.

Código corregido

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

Errores relacionados

¿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