Con este reto descubrí algo interesante y es que si extiendes una clase sobre otra debes siempre debes poner el super constructor aunque no le pases propiedades.
Ahora si dejo mi respuesta abajo.
Solución:
.
.
.
.
.
.
.
.
.
.
Card.class.js:
import { Pay } from "./Pay.class.js";
export class Card extends Pay {
constructor(number) {
super()
this.number = number
}
makePay(quantity) {
try {
if (this.number.length !== 16) throw Error('No tiene 16 dígitos')
return {
...super.makePay(quantity),
lastCardNumbers: this.number.slice(-4)
}
}
catch (e) {
throw Error(e)
}
}
}
Cash.class.js:
import { Pay } from "./Pay.class.js";
export class Cash extends Pay {
makePay(quantity) {
return super.makePay(quantity)
}
}
Pay.class.js:
export class Pay {
makePay(quantity) {
return {
realized: true,
quantity: quantity
}
}
}
PayPal.class.js:
import { Pay } from "./Pay.class.js";
export class PayPal extends Pay {
constructor(email) {
super()
this.email = email
}
makePay(quantity) {
return {
...super.makePay(quantity),
platform: "PayPal",
email: this.email
}
}
}
exercise.js:
export function processPay(method, quantity) {
return method.makePay(quantity)
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?