es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pruebas unitarias de Angular en localstorage, Error ts(7053)

 beforeEach (() => { ...
   let store = {};
   const mockSessionStorage = {
   getItem: (key: string): string => key in store ? store[key] : null,
   setItem: (key: string, value: string) => store[key] = `${value}`,
   removeItem: (key: string) => delete store[key],
   clear: () => store = {}
};
...

y obtengo el mensaje de error: El elemento tiene de manera implícita un tipo “any” porque la expresión de tipo “string” no se puede usar para el tipo de índice “{}”.
No se encontró ninguna firma de índice con un parámetro de tipo “string” para el tipo “{}”.ts(7053)

También soy nuevo en TypeScript y no sé si es por el mensaje de error o si estoy haciendo algo más mal. Agradecería si alguien pudiera echar un vistazo rápido.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error que estás viendo está relacionado con la definición de tipo de tu objeto store. El compilador de TypeScript te está diciendo que estás intentando usar una cadena como índice para tu objeto store, pero TypeScript no reconoce store como teniendo una firma de índice de tipo cadena.

    Para solucionar este error, puedes definir una firma de índice para tu objeto store:

    let store: {[key: string]: string} = {};
    

    Esto le dice a TypeScript que el objeto store puede ser indexado con cualquier cadena y devolverá un valor de tipo cadena.

    Una vez que hagas este cambio, el mensaje de error debería desaparecer. Sin embargo, ten en cuenta que esto no garantiza la seguridad de tu código en tiempo de ejecución, y aún debes tener en cuenta las claves y valores que estás almacenando en store.

Comments are closed.