Encadenamiento de funciones
Las APIs con funciones encadenadas son un patrón común en
JavaScript, lo que permite que tu código sea más conciso,
con menos valores intermedios y más fácil de leer debido
a sus habilidades de anidamiento.
Una API muy común que funciona con encadenamiento
es jQuery. Aquí hay un ejemplo de jQuery
usada con tipos de DefinitelyTyped:
// Si añades un punto en la línea de arriba, verás
una larga lista de funciones. Este patrón es fácil
de reproducir en JavaScript. La clave es asegurarse
de que siempre retornes el mismo objeto.
Aquí hay un ejemplo de API que crea una API con
encadenamiento. La clave es tener una función en
un nivel externo que mantenga información del estado
interno, y un objeto que exponga la API que se
devuelve siempre.
import $ from "jquery";
// Aquí hay un ejemplo de uso de la API de jQuery:
$("#navigation").css("background", "red").height(300).fadeIn(200);
// Lo que permite el mismo estilo de API que
vimos en jQuery:
const addTwoNumbers = (start = 1) => {
let n = start;
const api = {
// Implement each function in your API
add(inc: number = 1) {
n += inc;
return api;
},
print() {
console.log(n);
return api;
},
};
return api;
};
// Este ejemplo hace uso de la inferencia
de tipos de TypeScript como una forma
de proporcionar herramientas para patrones
de JavaScript.
Para más ejemplos sobre esto:
- example:code-flow
addTwoNumbers(1).add(3).add().print().add(1);
// Aquí hay un ejemplo similar que usa una clase:
class AddNumbers {
private n: number;
constructor(start = 0) {
this.n = start;
}
public add(inc = 1) {
this.n = this.n + inc;
return this;
}
public print() {
console.log(this.n);
return this;
}
}
// Y aquí la vemos en acción:
new AddNumbers(2).add(3).add().print().add(1);