Este error de compilación de TypeScript (TS2339) se reporta cuando intentas acceder a una propiedad que no está declarada en el tipo de la variable. TypeScript garantiza que cada acceso a propiedad sea conocido en tiempo de compilación, por lo que acceder a una propiedad no declarada es un error aunque pueda existir en tiempo de ejecución.
Por qué ocurre
- •Acceder a una propiedad que nunca fue agregada a la interfaz o definición de tipo.
- •Un error tipográfico en el nombre de la propiedad que no coincide con ningún campo declarado.
- •Acceder a una propiedad en el resultado de una llamada a una API tipada como tipo genérico o base que no incluye esa propiedad.
- •Una librería fue actualizada y una propiedad fue renombrada o eliminada en la nueva versión.
Ejemplos
Código que causa el error
interface User {
id: number;
name: string;
}
const user: User = { id: 1, name: "Alice" };
console.log(user.email);Error en la terminal
error TS2339: Property 'email' does not exist on type 'User'.
Cómo solucionarlo
Agrega la propiedad faltante a la interfaz o definición de tipo. Si la propiedad es opcional, márcala con un signo de interrogación (email?: string). Usa aserciones de tipo (as MiTipo) con moderación y solo cuando estés seguro de la forma en tiempo de ejecución. Mantén las definiciones de tipo sincronizadas con las respuestas de la API usando herramientas de generación de código.
Código corregido
interface User {
id: number;
name: string;
email?: string; // add the property (optional)
}
const user: User = { id: 1, name: "Alice", email: "alice@example.com" };
console.log(user.email);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