Si observa esta documentación exec , dice que debería existir una propiedad llamada indices :
Una matriz donde cada entrada representa una coincidencia de subcadena. Cada coincidencia de subcadena en sí misma es una matriz donde la primera entrada representa su índice inicial y la segunda entrada su índice final. La matriz de índices también tiene una propiedad de grupos que contiene un objeto de todos los grupos de captura con nombre. Las claves son los nombres de los grupos de captura y cada valor es una matriz en la que el primer elemento es la entrada inicial y la segunda entrada es el índice final del grupo de captura. Si la expresión regular no contiene ningún grupo de captura, los grupos no están definidos.
const ex = / ([az])/dg.exec( "abcde f" ); if (ex) { const x = ex.indices; // Error! Property 'indices' does not exist on type 'RegExpExecArray'. }Siento que me estoy perdiendo algo realmente obvio. ¿Por qué no se compila esto y cómo lo consigo?
La propuesta que agregó .indicies es bastante nueva : solo avanzó a la Etapa 4 en el proceso TC39 hace menos de un año, y TypeScript aún no la ha integrado. Hay un problema abierto en TS github para agregar .indicies , pero aún no se ha solucionado.
En resumen, si desea que esto funcione , tendrá que esperar hasta que alguien contribuya con esta nueva característica a los tipos de TypeScript.
Por supuesto, podría definir un tipo usted mismo y utilizar as para afirmar:
type RegExpMatchArrayWithIndices = RegExpMatchArray & { indices: Array<[number, number]> }; const ex = / ([az])/dg.exec( "abcde f" ); if (ex) { const x = (ex as RegExpMatchArrayWithIndices).indices; }