Estoy tratando de crear una clase ES6 con dos constructores. El código se parece a esto:
class MyClass { constructor(a, b) { this.a = a; this.b = b; } constructor(c) { this.a = c; this.b = c; } } Pero recibo el error de sintaxis Uncaught SyntaxError: A class may only have one constructor . ¿Hay alguna solución que me permita tener múltiples constructores o solo soy un constructor limitado en JS?
JavaScript no tiene sobrecarga incorporada. Pero puedes hacer lo que quieras usando un argumento predeterminado.
class myClass { constructor(a, b = a) { this.a = a; this.b = b; } } Si no es tan simple como su ejemplo, puede dar a b algún otro valor predeterminado que no sea un valor real posible. Luego puede verificar si el valor es el predeterminado y ejecutar un código diferente.
class myClass { constructor(a, b = undefined) { if (b === undefined) { // do the 1-argument initialization } else { // do the 2-argument initialization } } }