En una aplicación Angular 12, creé la siguiente extensión:
declare global { interface String { toNumber(): number | null; } } Object.defineProperty(String.prototype, "toNumber", { value: function(this: string) { return Number(this) || null; } });Cuando se usa en un componente de Angular:
var number = stringValue.toNumber();me sale el error:
Property 'toNumber' does not exist on type 'string'.¿Cuál es la mejor manera de usar tales extensiones en Angular?
¿Necesito cambiar la forma en que estoy creando la extensión?
Puedes lograrlo de la siguiente manera:
src , cree el archivo global.d.ts para definir la firma del método de extensión, con el siguiente contenido: declare global { interface String { toNumber(): number | null; } } export {}; // to define this file as a modulestring.extension.ts en cualquier lugar de la carpeta src , con el siguiente contenido: Object.defineProperty(String.prototype, "toNumber", { value: function(this: string) { return Number(this) || null; } }); export {}; // to define this file as a modulestring.extension.ts en app.module.ts : import 'PATH_TO_YOUR_FILE/string-extension'