typescript - TS7053: El elemento tiene implícitamente un tipo 'any' porque no se puede usar una expresión de tipo 'string' para indexar el tipo
Estoy intentando iterar sobre las propiedades de un objeto en TypeScript. Hay una pregunta similar ¿Cómo iterar sobre las claves de un objeto genérico en TypeScript? pero la respuesta no funciona en este caso.
Estoy usando un bucle for..in como se sugiere en la respuesta, pero todavía recibo un error:
TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Foo'. No index signature with a parameter of type 'string' was found on type 'Foo'.interface Foo {
a: number;
b: number;
}
doSomething(foo?: Foo) {
if (foo)
for (const key in foo)
console.log(foo[key])
~~~~~~~~
}
La respuesta a esta pregunta TypeScript - ts(7053)... explica que no se puede usar una cadena genérica como índice para un objeto con propiedades nombradas. TypeScript no puede garantizar que la cadena coincida realmente con un nombre de propiedad. Pero estoy usando for..in, así que TypeScript sí puede garantizar que key coincide con un nombre de propiedad.
¿Por qué no me funciona? ¿Cuál es la manera correcta de deshacerse de este error de TypeScript?