Texto mecanografiado "error TS2532: El objeto es posiblemente 'indefinido'" incluso después de una verificación indefinida
Estoy tratando de usar el--strict
opción entsc
pero me encontré con el siguiente caso "extraño" que parece no entender.
Si escribo
function testStrict(input: {query?: {[prop: string]: string}}) {
if (input.query) {
Object.keys(input.query).forEach(key => {
input.query[key];
})
}
return input;
}
el compilador se queja de:
test.ts (5,9): error TS2532: El objeto es posiblemente 'indefinido'.
(la línea ofensiva esinput.query[key];
)
Lo que no entiendo es que ya he verificado si no está definido con el protector if en la primera línea de la funciónif (input.query)
, entonces¿Por qué el compilador cree que podría ser indefinido?
Lo arreglé agregando otro protector idéntico antes del acceso al objeto, como:
function testStrict(input: {query?: {[prop: string]: string}}) {
if (input.query) {
Object.keys(input.query).forEach(key => {
if (input.query) {
input.query[key];
}
})
}
return input;
}
pero no entiendo por qué se requeriría otra línea idéntica.