DEV Community

Cover image for Element implicitly has an 'any' type because expression of type 'any' can't be used to index type
Fernando Garcia
Fernando Garcia

Posted on

Element implicitly has an 'any' type because expression of type 'any' can't be used to index type

Tengo este objeto declarado con dos propiedades

photosPlanes:photoPLanes = {

  Entrenamiento: '', 
  Dieta: ''

}
Enter fullscreen mode Exit fullscreen mode

y quiero dinámicamente setear el valor de una de las propiedades del mismo de esta forma:

 if(element.urlThumb!==''){

        this.photosPlanes[element.name]=element.urlThumb

      }
Enter fullscreen mode Exit fullscreen mode

Pero obtengo el siguiente error:

Image description

LA SOLUCIÓN

Para resolver el problema usamos algo llamado Type Assertions

"photoPLanes" es la interface que uso

this.photosPlanes[ element.name as keyof photoPLanes ] = element.urlThumb
Enter fullscreen mode Exit fullscreen mode

En el articulo de Borislav Hadzhiev podemos encontrar otro ejemplo mas claro aun:

const str = 'name' as string;

const obj = {
  name: 'James Doe',
  country: 'Chile',
};

// 👇️ "James Doe"
console.log(obj[str as keyof typeof obj]);

// 👇️ type T = "name" | "country"
type T = keyof typeof obj;
Enter fullscreen mode Exit fullscreen mode

Sígueme y cualquier problema escríbeme que te ayudo 😉🤘
https://linktr.ee/fergolive

Top comments (0)