Saltar al contenido

Usando Clases en CoffeeScript

4 junio, 2019

CoffeeScript es un lenguaje que se compila a JavaScript. El código en los archivos .coffee no se interpreta en tiempo de ejecución, como JavaScript, pero se compila en archivos .js.

Ya sea que esté escribiendo para JavaScript para Node.js o cualquier implementación del navegador, CoffeeScript se puede escribir para cualquier y todos los tipos de JavaScript.

Proporciona una estructura básica conocida como clase que se construye utilizando los prototipos de JavaScript. CoffeeScript es un pequeño lenguaje que compila en JavaScript.

Debajo de esa extraña pátina de Java, JavaScript siempre ha tenido un corazón precioso. CoffeeScript es un intento de exponer las partes buenas de JavaScript de una manera sencilla.

¿Cómo Utilizar Clases en CoffeeScript?

Las clases se pueden declarar de forma trivial en CoffeeScript, que es un contraste refrescante con el JavaScript mucho más detallado.

  • Primero Escriba la “class” de Palabra Clave, Seguido del Nombre de su Clase.

Los métodos, incluido el método constructor, se escriben con el nombre del método seguido de dos puntos. Se necesita espacio en blanco antes de cada nombre de método. A continuación, puede utilizar el operador de función (->).

class TimeMachine
constructor: ->

Para crear una instancia de un objeto, use la palabra clave new seguida del nombre de la clase.

time_machine = new TimeMachine
  • Variables de Instancia

Las variables de instancia comienzan con un símbolo @. Para que podamos tener un piloto.

class TimeMachine
constructor: (pilot) ->
@pilot = pilot
Puede acceder a ellos a través de la notación de puntos también.

class TimeMachine
constructor: (pilot) ->
@pilot = pilot


time_machine = new TimeMachine "H. G. Wells"

console.log time_machine.pilot

En el ejemplo anterior, la cadena H. G. Wells se imprimirá en la consola.

En lugar de configurar @pilot = pilot, puedes escribirlo en forma abreviada de la siguiente manera:

class TimeMachine
constructor: (@pilot) ->
  • Herencia de Clase

Para escribir una subclase puedes usar extends como esta:

class Tardis extends TimeMachine

class DeLorean extends TimeMachine

Digamos que TimeMachine tiene un método go con un parámetro que se desconecta cuando Time Machine está a punto de viajar en el tiempo.

class TimeMachine
constructor: (@pilot) ->
go: (noise) ->
console.log noise

Ahora vamos a cada vez que implementemos la máquina y llamemos al método super.

class Tardis extends TimeMachine
go: ->
super "vorp vorp"

class DeLorean extends TimeMachine
go: ->
super "One point twenty-one gigawatts!"

doctors_wife = new Tardis "The Doctor"
doc_browns_wheels = new DeLorean "Marty"

doctors_wife.go()
doc_browns_wheels.go()

Entonces llamando go() en los casos en que ambas máquinas de tiempo imprimirán su propio sonido respectivo.

Mixins

Los mixins no son algo soportado de forma nativa por CoffeeScript, por la buena razón de que se pueden implementar de manera trivial.

Por ejemplo, aquí hay dos funciones, extend () e include () que agregarán propiedades de clase y instancia respectivamente a una clase.

extend = (obj, mixin) ->
obj[name] = method for name, method of mixin 
obj

include = (klass, mixin) ->
extend klass.prototype, mixin

# Usage
include Parrot,
isDeceased: true

(new Parrot).isDeceased

Los mixins son un gran patrón para compartir lógica común entre módulos cuando la herencia no es adecuada. La ventaja que puede incluir varios en comparación con la herencia de la que solo se puede heredar una clase.