Este es solo un ejemplo que quiero entender. Sé que hay una mejor manera de seleccionar el último elemento de la matriz, pero no sé por qué funciona de esa manera.
const numbers = [1, 2, 3]; let exampleId: number; numbers.forEach(function(number) { exampleId = number; }); console.log(exampleId);¿Por qué aparece el error "La variable 'exampleId' se usa antes de ser asignada". en la línea de console.log?
Tal vez el intérprete no tenga en cuenta que los numbers de la matriz no están vacíos en su código.
Porque, si estuviera vacío, seguro que se usaría la variable exampleId antes de ser asignada.
(Si la matriz está vacía, el código dentro del bucle forEach nunca se ejecuta y la variable nunca se asigna)
El alcance de la asignación está dentro del bucle forEach ; Si numbers no tienen valores, exampleId nunca se definiría. TS esencialmente le advierte sobre eso, ya que no puede llamar a una variable que aún no se ha definido.
Inicialice su variable con un valor
let exampleId = 0;Use afirmaciones no nulas, aunque sugeriría en contra de ellas
console.log(exampleId!);Con esta solución, esencialmente le estamos diciendo a TS que no se preocupe por eso, ya que seguramente existirá un valor; Eso, en otras palabras, eliminar el tipo de seguridad, por lo que sugeriría ir con la opción 1.
La forma de seleccionar el valor del último elemento de una matriz es
function lastElementOfArray(arr = []) { return arr.length > 0 ? arr[ arr.length - 1 ] : undefined ; } La razón por la que obtiene Variable 'exampleId' is used before being assigned. se debe a que no hay garantía de que se invoque la devolución de llamada Array.forEach() que asigna un valor a exampleId (por ejemplo, cuando los numbers de la matriz tienen una longitud de 0).
Y entonces, obtienes ese mensaje en la línea
console.log(exampleId)