tutorial script que programacion paradigmas paradigma funcional ejemplos abismo functional-programming typescript

functional programming - que - ¿Qué funciones adicionales de programación funcional ofrece TypeScript en comparación con JavaScript?



programacion funcional tutorial (1)

Estoy interesado en aprender TypeScript, pero solo si puedo codificar funcionalmente con él y evitar el imperativo / OOP tanto como sea posible.

¿TypeScript agrega funciones sobre JavaScript básico que mejor admita la programación funcional? ¿Qué son?


JavaScript es un lenguaje de programación multi-paradigma.

Desde MDN :

Un lenguaje de programación multi-paradigma es un lenguaje de programación que soporta más de un paradigma de programación. La idea central de un lenguaje multiparadig es proporcionar un marco en el que los programadores puedan trabajar en una variedad de estilos, entremezclando libremente construcciones de diferentes paradigmas. El objetivo de diseño de tales lenguajes es permitir que los programadores utilicen la mejor herramienta para un trabajo, admitiendo que un solo paradigma no puede resolver todos los problemas de la manera más fácil o eficiente.

Al admitir esta vista, JavaScript admite o, de hecho, utiliza varios estilos. Por ejemplo, su sintaxis sigue una estructura en forma de lenguaje C, que es un lenguaje de procedimiento, y al mismo tiempo, JavaScript copia muchos nombres y convenciones de nomenclatura de un lenguaje de programación orientado a objetos, Java, pero los dos lenguajes no están relacionados y son muy distintos. Semántica diferente. Los principios de diseño clave dentro de JavaScript se toman de los lenguajes de programación Auto y Esquema.

TypeScript es un superconjunto de JavaScript, lo que significa que cada programa JavaScript también es un programa válido de TypeScript. Entonces, TypeScript es también un lenguaje de programación multi-paradigma y puede ser utilizado como un lenguaje de programación funcional.

Puede aprender a usar JavaScript y TypeScript como un lenguaje de programación funcional con el libro Functional JavaScript de Michael Fogus.

También echa un vistazo a algunas bibliotecas de código abierto:

Actualizar

No creo que TypeScript tenga ninguna característica adicional de FP sobre JavaScript básico. Sin embargo, TypeScript incluye una sintaxis de función alternativa conocida como sintaxis lambda ()=>{} .

Creo que esta sintaxis no se agregó a TypeScript para "hacer que el lenguaje sea más funcional", sino para resolver un problema común de JavaScript: lidiar con el valor de this .

Podemos argumentar que la sintaxis lambda facilita la creación de código que parece más funcional que el código JavaScript tradicional. Por ejemplo, en lugar de escribir:

function isBigEnough(value) { return value >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);

Podemos escribir:

var isBigEnough = (value) => value >= 10; var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);

O solo:

var filtered = [12, 5, 8, 130, 44].filter((value) => value >= 10);

Actualización 2

Además, TypeScript tiene tipos y los tipos son muy importantes en la programación funcional. Lee "¿Es realmente pura tu función de JavaScript? " De André Staltz para entender por qué.

TypeScript 2.0 introduce uniones etiquetadas .

Las uniones etiquetadas son una nueva y emocionante característica que brinda funcionalidad de lenguajes como F #, Swift, Rust y otros a JavaScript, al tiempo que abarca la forma en que las personas escriben JavaScript hoy. Esta característica también se denomina uniones discriminadas, uniones disjuntas o tipos de datos algebraicos .

Los tipos de datos algebraicos son otra característica importante en los lenguajes de programación funcionales. Así que podemos ver que TypeScript está comenzando a agregar características para los desarrolladores de FP.

Actualización 3

Las dos últimas versiones de TypeScript han introducido características como: Sistema de tipo estructural, tipos literales, uniones discriminadas, tipos mapeados, etc. Por lo tanto, el sistema de tipos tiene ahora un soporte mucho mejor para los casos de uso de programación funcional.