¿Cómo exportar un método prototipo?
Creé un método prototipo:
Array.prototype.remove = function(elementToRemove: any): void { var __idx = this.indexOf(elementToRemove); if (__idx >= 0) { this.splice(__idx, 1); } else { throw new Error(`Cannot find element ${elementToRemove}`) } }y quiero exportarlo y usarlo en otro archivo. Pero no sé cómo agregarle export:
ambas cosas
export Array.prototype.remove = function(elementToRemove: any)y
Array.prototype.remove = export function(elementToRemove: any)no funciona, recibí el error "Expresión esperada". Entonces, ¿cómo puedo exportarlo?
pd: no estoy usando nodejs, estoy usando la interfaz web en Chrome con HTML y CSS.
El problema fundamental es que su código tiene un efecto secundario : agrega algo a Array.prototype .
Una opción es exportar una función que, cuando se llama, agrega la función al prototipo:
export const addRemoveToPrototype = () => { Array.prototype.remove = function( // ...y luego los consumidores pueden usarlo haciendo
import { addRemoveToPrototype } from './addRemoveToPrototype'; addRemoveToPrototype();Otra opción es simplemente ejecutar ese código en el nivel superior del módulo:
Array.prototype.remove = function(elementToRemove: any): void {y luego los consumidores pueden simplemente importar el módulo, pero no hacer nada con él:
import './addRemoveToPrototype';Dicho esto, realmente recomendaría no mutar los objetos incorporados: hace que el código sea frágil y más fácil de romper, especialmente cuando otros scripts se ejecutan en el mismo entorno.