¿Cómo encaja TypeScript en este método?
test.jsconst testList = [1, 2, 2, 4, 5, 2, 4, 2, 4, 5, 5, 6, 7, 7, 8, 8, 8, 1, 4, 1, 1];
const lastIndex = testList.findLastIndex((e:number) => e === 100);
// Property 'findLastIndex' does not exist on type 'number[]'. Did you mean 'findIndex'?ts(2551)
// lib.es2015.core.d.ts(43, 5): 'findIndex' is declared here.
tsconfig.json...
"target": "ES6",
...
¿El método findLastIndex necesita alguna configuración de ts?
Respuesta #1
El método de array findLast() y el método de array findLastIndex() son actualmente, a fecha de 15-01-2023, parte de una propuesta que ha alcanzado la Etapa 4 del proceso TC39. Por lo tanto, actualmente no están en ninguna versión publicada de ECMAScript, pero sí están en la versión ESNext y, por lo tanto, aparecerán en ES2023.
Para TypeScript, se presentó microsoft/TypeScript#48829 para admitir estas adiciones. Fueron implementadas en microsoft/TypeScript#49636, que se fusionó recientemente en la rama principal de TS el 13-01-2023 (hace dos días). Así que ninguna versión de TypeScript actualmente lanzada las admite, pero sí están en la versión nocturna typescript@next y se lanzarán con TypeScript 5.0.
Entonces, por ahora, si quieres acceder a estos métodos sin agregar tus propias declaraciones para ellos, deberías usar la versión nightly de TypeScript con tu --target configurado en "ESNext" (o tal vez "ES2023" si la opción está disponible).
Enlace del playground al código, TS5.0-dev con objetivo ESNext
Respuesta #2
let lastIndex = -1;
for (let i = testList.length - 1; i >= 0; i--) {
if (testList[i] === 100) {
lastIndex = i;
break;
}
}
console.log(lastIndex); // -1 if 100 is not in the list, otherwise the last index of 100
