Tengo una clase de vehículo ES6 definida a continuación. Quiero tener un método estático que pueda usar con o sin paréntesis. He definido static AvailableTypes static AvailableTypes() pero da un error TypeError: Vehicle.AvailableTypes is not a function
class Vehicle { constructor({ vehicleType = 'car', name = '', range = '', seats = '' }) { this.vehicleType = vehicleType this.name = name this.range = range this.seats = seats } getRangeToSeatsRatio() { return this.range / this.seats } get rangeToSeatsRatio() { return this.range / this.seats } static AvailableTypes = ['car', 'plane'] static AvailableTypes() { return this.AvailableTypes } } const vehicle = new Vehicle({ name: 'My Car name', seats: 500, wheels: 45 }) console.log(Vehicle.AvailableTypes) // (2) ['car', 'plane'] console.log(Vehicle.AvailableTypes()) //TypeError: Vehicle.AvailableTypes is not a function Esto debería dar como resultado que los Tipos de vehículos availableVehicleTypes sean ['car', 'plane']
const availableVehicleTypes = Vehicle.AvailableTypes; Esto también debería dar como resultado que los Tipos de vehículos availableVehicleTypes sean ['car', 'plane']
const availableVehicleTypes = Vehicle.AvailableTypes();Es imposible crear un valor que sea tanto una función como una matriz.
Decídete y elige solo uno de los dos, será mucho menos confuso para los usuarios de tu clase.