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.
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 objetostore
, pero TypeScript no reconocestore
como teniendo una firma de índice de tipo cadena.Para solucionar este error, puedes definir una firma de índice para tu objeto
store
: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
.