Quiero usar replaceAll en TypeScript y angular 10.
Pero recibo este error: la propiedad 'replaceAll' no existe en el tipo 'string' .
Este es mi código:
let date="1399/06/08" console.log(date.replaceAll('/', '_'))Salida: 13990608
¿Cómo puedo arreglar mi mecanografiado para mostrarme esta función?
De los documentos :
A partir de agosto de 2020, el método
replaceAll()es compatible con Firefox, pero no con Chrome. Estará disponible en Chrome 85.
Mientras tanto, puede encontrar muchos otros métodos aquí .
Captura de pantalla para posibles futuros lectores:
Puede resolver el problema usando RegExp y global flag . La bandera global es lo que hace que replace se ejecute en todas las ocurrencias.
"1399/06/08".replace(/\//g, "_") // "1399_06_08"Chrome es compatible con replaceAll, por lo que es seguro de usar. Sin embargo, mecanografiado aún emite un error, por lo que puede convertir su cadena en cualquiera para superar ese obstáculo.
const date: any ="1399/06/08" console.log(date.replaceAll('/','_'))Solo usa esta función
let date="1399/06/08" console.log(date.split('/').join('_'))Puedes crear un archivo
myOwnTypes.d.ts
en la raíz de su proyecto angular y agregue el siguiente código:
interface String { replaceAll(input: string, output : string): any; }Eso le dirá a TypeScript que las cadenas tienen esta propiedad.
Ahora replaceAll es compatible con Chrome y Firefox, pero siempre es bueno verificar el caniuse para verificar si se ajusta a sus necesidades.
https://caniuse.com/?search=replaceAll
Si esto funciona para usted, los votos a favor son más que bienvenidos, estoy comenzando con esta cuenta de stackoverflow y agradecería el apoyo :)
Según MDN Web Docs,
"para realizar una búsqueda y reemplazo global, incluya el interruptor
gen la expresión regular".
Entonces, puedes intentar hacer:
const date="1399/06/08" const forwardSlashRegex = /(\/)/g; console.log(date.replace(forwardSlashRegex, '_')); Esto reemplaza automáticamente todas las barras diagonales con el guión bajo. Asegúrese de mantener también el indicador global /g al final de la expresión regular, ya que le permite a JS saber que desea reemplazar TODOS los lugares donde aparece la barra inclinada.
Para obtener más información sobre el uso de indicadores regex, consulte la siguiente guía muy útil: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
Debería poder agregar esos tipos a través de su tsconfig.json . Agregue "ES2021.String" a lib dentro de compilerOptions .
Su tsconfig debería verse así:
{ ..., "compilerOptions": { ..., "lib": [ ..., "ES2021.String" ] } } El método replaceAll se define dentro de lib.es2021.string.d.ts de la siguiente manera:
interface String { /** * Replace all instances of a substring in a string, using a regular expression or search string. * @param searchValue A string to search for. * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. */ replaceAll(searchValue: string | RegExp, replaceValue: string): string; /** * Replace all instances of a substring in a string, using a regular expression or search string. * @param searchValue A string to search for. * @param replacer A function that returns the replacement text. */ replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }