typescript: un lenguaje aburrido para programadores torpes y tristes

138
TypeScript Un lenguaje aburrido para programadores torpes y tristes by @micael_gallego MADRID · NOV 18-19 · 2016

Upload: micael-gallego

Post on 16-Apr-2017

884 views

Category:

Software


4 download

TRANSCRIPT

Page 1: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

TypeScriptUn lenguaje aburrido para programadores torpes y tristes

by @micael_gallego

MADRID · NOV 18-19 · 2016

Page 2: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién soy?

@micael_gallego

[email protected]

@micaelgallego

Page 3: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién soy?

developer

Page 4: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién soy?

developer

Page 5: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién soy?

developer

Page 6: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién soy?

developertorpe

Page 7: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién soy?

+developer

torpe

Page 8: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Que he hecho?

Page 9: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Qué he hecho?

Page 10: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Ya me lo dijo Javier Abadía

Programar en Java es como...

Page 11: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Ya me lo dijo Javier Abadía

Programar en Java es como...

Page 12: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Cómo me preparaba para montar en bici...

Page 13: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Un día todo cambió...

Page 14: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

… llegó “front”

Page 15: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

… llegó “front”

Page 16: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 17: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

https://www.destroyallsoftware.com/talks/wat

Page 18: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 19: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 20: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 21: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 22: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 23: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 24: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

pero no puedo dejar

de pensar en él...

Page 25: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

eclipse, te echo de menos...

Page 26: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

...necesito tu ayuda

Page 27: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Avísame si me equivoco…

y ayúdame a solucionar mis problemas

Page 28: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Dime qué puedo hacer...

...y escribe tu el código por mi

Page 29: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

A veces cambio de nombre...

...y tú te aseguras de que los demás lo saben

Page 30: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Y cuando tengo dudas...

...tú me las resuelves

Page 31: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

...sé que con JavaScript no

me puedes ayudar

Page 32: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

pero puedo añadir a mi

código lo que te haga falta

Page 33: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 34: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Qué es TypeScript?

Una extensión de JavaScript ES6

para que puedas ayudar a las herramientas

para que te ayuden a ti

Page 35: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 36: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Vamos a programar y

os lo cuento...

Page 37: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Necesitamos un editor moderno

Visual Studio Code

Page 38: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Preparando el entorno...

● Node.jshttps://nodejs.org/

● Visual Studio Codehttps://code.visualstudio.com

● TypeScriptnpm install -g typescript

Page 39: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 40: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Herramientas TypeScript

● Analizan el código TS y generan JS ES6 (quitando el código no estándar)

● Si encuentra algún problema en tu código te avisan

● Aunque tu código tenga “avisos”, siempre se genera el JavaScript

● Un mismo proyecto puede tener código JS y TS a la vez

Page 41: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

el lenguaje

Page 42: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Valores del mismo tipo en variables

● Si asignas un valor de un tipo al inicializar una variable y luego asignas un valor de otro tipo, TypeScript te avisa

ERROR: Type 'string' is not assignable to type 'number'

Page 43: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Verificación de uso correcto

● TS te avisa si usas una propiedad o método no disponible en el tipo de la variable

ERROR: Property 'length' does not exist on type 'number'

Page 44: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Autocompletado de métodos

● Como sabe el tipo de la variable y los métodos que tiene, te ayuda

Page 45: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Variables no declaradas

● Si intentas usar una variable no declarada, te avisa

ERROR: Cannot find name 'nam'

Page 46: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Variables con cualquier valor

● Si no inicializas la variable, TS asume que esa variable puede contener valores de cualquier tipo

Variable con valores de diferente tipo

Page 47: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Te has dado cuenta?

Era código JavaScript estándar

Empezamos con las extensiones de TypeScript

Page 48: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de parámetros

● TS no puede inferir el tipo de los parámetros porque no se inicializan*

De qué tipo son estos parámetros?

* En ES6 se puede dar valor por defecto a los parámetros

Page 49: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de parámetros

● Para poder ayudar, TS necesita saber de qué tipo son los parámetros

● Tipos básicos

Etiquetas de tipo

string number boolean

Page 50: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipo de retorno de funciones

● Si le decimos el tipo de retorno de la función, TS también nos ayuda

ERROR: Type 'string' is not assignable to type 'number'

Page 51: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipo de retorno de funciones

● Si le decimos que no vamos a devolver valor, nos avisa si lo hacemos

● Usamos el “tipo” void

ERROR: Type 'string' is not assignable to type 'void'

No devolvemos valor

Page 52: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Llamar a una función

● Si le decimos los tipos de la función, nos ayuda si no hacemos bien la llamada

● Y también puede inferir el tipo de la variable

ERROR: Argument of type 'string' is not assignable to parameter of type 'number'

TS conoce que num es de tipo

number

Page 53: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Parámetros opcionales

● En TS se asume que todos los parámetros son obligatorios, pero podemos hacer que sean opcionales con ? parámetro

opcional

ERROR: Supplied parameters do not match any signature of call target.

Page 54: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Declaración del tipo en un variable

● Siempre podemos indicar el tipo de la variable al declararla

● También la podríamos inicializar

ERROR: Type 'number' is not assignable to type 'string'

Page 55: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Arrays

● TS también nos ayuda con los arrays

Tipo string

Tipo string[]

Tipo string

Page 56: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Arrays

● Incluso con sus métodos

ERROR: Argument of type 'string' is not assignable to parameter of type 'boolean'

Page 57: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

¿Has visto todo lo que

te puede ayudar TypeScript

sabiendo el tipo?

Page 58: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Te gustaría que TS te

avisara cuando no sabe el

tipo de una variable?

Page 59: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

El tipo any

● Cuado TS no puede adivinar un tipo mejor para una variable, considera que tiene el tipo any Estos parámetros tienen tipo any

Como puede venir cualquier valor, TS no nos puede ayudar mucho

Page 60: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

El tipo any

● Si tomamos la decisión de poner tipo a todos los parámetros y variables, estaría bien que TS te avisara si se te olvida

● TS te puede avisar si una variable tiene un tipo any implícito

https://basarat.gitbooks.io/typescript/content/docs/options/noImplicitAny.html

--noImplicitAny

Page 61: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Fichero tsconfig.json

● Un proyecto TS suele tener un fichero tsconfig.json en la raíz para configurar las herramientas

https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

Genera módulos Node.js

Genera sourceMaps

Genera los JS en la carpeta “out”

Permite mezclar JS y TS

Incluye y excluye estos ficheros

Page 62: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

noImplicityAny

● Avisa cuando se infiere el tipo any para una variable o parámetro

noImplicitAny activada

https://basarat.gitbooks.io/typescript/content/docs/options/noImplicitAny.html

Page 63: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

noImplicityAny

● Si está activada noImplicitAny se obtiene el siguiente aviso

https://basarat.gitbooks.io/typescript/content/docs/options/noImplicitAny.html

ERROR: Parameter 'name' implicitly has an 'any' type

Page 64: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

noImplicityAny

● Si no sabemos el tipo, ponemos el tipo del parámetro como any

https://basarat.gitbooks.io/typescript/content/docs/options/noImplicitAny.html

Page 65: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Elegir el tipo más preciso

● Tipos básicos– any:

● Cualquier valor● Demasiado genérico

– number, string o boolean: ● Algunas veces demasiado restringido

Page 66: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

y si en mi código JS un

parámetro id puede ser

number o string?

Page 67: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos Avanzados

Page 68: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

TypeScript

no te obliga a cambiar

tu código JavaScript

Page 69: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tiene un sistema de tipos

adaptado a los idiomas

JavaScript

Page 70: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos unión

● Una variable puede tener valores de varios tipos

https://www.typescriptlang.org/docs/handbook/advanced-types.html

Tipo unión

Page 71: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos unión

● Si la definición del tipo se complica, se puede definir como un tipo, darle nombre y usar ese nombre

https://www.typescriptlang.org/docs/handbook/advanced-types.html

Page 72: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Enumerados

● La unión también se puede usar para definir enumerados de string

https://basarat.gitbooks.io/typescript/content/docs/tips/stringEnums.html

Enumerado basado en strings

ERROR: Argument of type '"meybe"' is not assignable to parameter of type '"yes" | "no" | "maybe"'* Existen mecanismos más avanzados

para declarar enumerados en TypeScript

Page 73: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de Funciones

Page 74: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de funciones

● Cuando asignamos una función a una variable se infiere el tipo de la función

ERROR: Supplied parameters do not match any signature of call target

Page 75: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de funciones

● Podemos declarar el tipo de la función de forma explícita

Tipo de la funciónParámetros => Tipo de retorno

Page 76: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de funciones

● Ahora con parámetros

Page 77: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de funciones

● Y si nos equivocamos, TS nos ayuda

ERROR: Type '() => string' is not assignable to type '(num: number) => number'. Type 'string' is not assignable to type 'number'

Page 78: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de funciones

● Para soportar idiomas típicos TS es flexible● Permite asignar funciones con menos

parámetros que los declarados en el tipo, siempre que sus tipos sean compatibles

Page 79: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de Objetos

Page 80: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● En los objetos literales se infiere el tipo de la inicialización de la variable

Page 81: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● Por defecto no podemos añadir propiedades

ERROR: Property 'telefono' does not exist on type '{ nombre: string; salario: number; }'

Page 82: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● Podemos declarar la variable como any, pero no se realizará ninguna validación

Variable de tipo any

Page 83: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● En los parámetros de las funciones, el tipo no se puede inferir

● Si queremos ayuda, hay que especificar el tipo de forma explícita

Error no detectado

Page 84: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● Se le puede dar un nombre al tipo de objeto

Tipo de objeto

Page 85: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● Se le puede definir propiedades opcionales

Opcional

Page 86: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de objetos

● Para prevenir errores, TS nos avisa cuando pasamos una propiedad no declarada

ERROR: ...Object literal may only specify known properties, and 'widht' does not exist...

Page 87: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases

Page 88: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases

Page 89: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Desde ES6, en JavaScript

se pueden implementar*

clases

* Aunque es azúcar sintáctico de los prototipos

Page 90: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases en ES6

Page 91: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Herencia de clases en ES6

Page 92: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Creación de objetos en ES6

Page 93: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases en ES6

● No se declaran los atributos● Los atributos se crean al usarse (con this) en

el constructor o los métodos● No existe el concepto de visibilidad de los

atributos, todos son públicos● Hay bastante controversia sobre su uso

https://medium.com/javascript-scene/how-to-fix-the-es6-class-keyword-2d42bb3f4caf#.vvmrzg9f0

https://medium.com/@housecor/in-defense-of-javascript-classes-e50bf2270a95#.bqp1arnuy

Page 94: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

TypeScript nos puede

ayudar a implementar clases

y crear objetos

(si queremos usarlas)

Page 95: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases en TypeScript

● Es obligatorio declarar los atributos● Podemos usar visibilidad public (por

defecto), private y protected● TypeScript nos avisa de:

– Uso de atributos que no existen– Llamadas a métodos que no existen o

parámetros no adecuados– Violaciones de la visibilidad

Page 96: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases en TypeScript

Declaración de atributos

Page 97: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases en TypeScript

● Para evitar tanta repetición, un parámetro del constructor con una visibilidad se considera también un atributo (y se inicializa)

Page 98: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Clases y tipos de objetos

● Los objetos de una clase se pueden asignar a variables definidas con un tipo de objeto si cumplen con su estructura

Person cumple la

estructura de Named

Person es asignable a

Named

Page 99: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Interfaces en TypeScript

● Un tipo de objeto se parece mucho a un interfaz de lenguajes como Java o C#

● Podemos declarar un tipo de objeto como un interfaz

Page 100: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Interfaces en TypeScript

● Las clases pueden implementar interfaces● TS nos avisa si la clase no cumple la

estructura del interfazERROR: Class 'Person' incorrectly implements interface 'Named'.

Property 'name' is missing in type 'Person'

Page 101: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de lasLibrerías

Bibliotecas?

Page 102: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Tipos de las librerías

● Lo ideal sería que todas las bibliotecas que usamos tuvieran los tipos ya definidos

● TypeScript viene de serie con librerías del navegador

● Podemos usar las que queramos dependiendo del entorno de ejecución

dom webworker es5 es6

Page 103: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Librerías de terceros?

● La comunidad ha definido el tipo de 2344 librerías

https://www.npmjs.com/~types

Page 104: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Librerías de terceros?

● La comunidad ha definido el tipo de 2344 librerías

https://www.npmjs.com/~types

Page 105: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Librerías de terceros?

● Algunas incluso están implementadas en TS

https://www.npmjs.com/~types

Page 106: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Y si la librería no tiene tipos?

● Puedes usarla como en JavaScript (sin ninguna ayuda de TS)

● O puedes ir definiendo los tipos que te vayan haciendo falta partiendo de la documentación

● Y si la definición es de calidad, puedes compartirla con la comunidad en DefinitelyTyped

http://definitelytyped.org/

Page 107: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Y mucho más...

Page 108: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Otras características de TypeScript

● Lenguaje– Generics en clases y funciones– Async / Await (ES7)– Anotaciones (ES7)

● Herramientas– Generar ES5 (evitando el uso de Babel)– Transpilador en el browser (prototipado)

Page 109: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Interesante...Y quién ha hecho

esto?

Page 110: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Page 111: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Quién ha hecho TypeScript?

● Un proyecto desarrollado en abierto en GitHub

● Liderando Anders Hejlsberg – (Turbo Pascal, Delphi, C#)

● Financiado por Microsoft● Licencia Apache 2

http://www.typescriptlang.org/ https://www.gitbook.com/book/basarat/typescript/details

Page 112: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Volvemos a la eterna

discusión de qué lenguajes son mejores?

Tipado estático vs dinámico?

Page 113: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

El eterno debate

● Static vs Dynamic– https://pchiusano.github.io/2016-09-15/static-vs-dynamic.html

● Static typing will not save us from bugs– http://www.drmaciver.com/2016/10/static-typing-will-not-save-us-from-broken-softwar

e/

● Types– https://gist.github.com/garybernhardt/122909856b570c5c457a6cd674795a9c

● What to know before debating type systems– http://blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.

html

● Unit testing is't enough. You need static typings too– http://evanfarrer.blogspot.com.es/2012/06/unit-testing-isnt-enough-you-need.html

Page 114: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Uncle BobRobert C. Martin

http://blog.cleancoder.com/uncle-bob/2016/05/01/TypeWars.html

You don't need static type checking if you have 100% unit test coverage

As TDD becomes more accepted, dynamic languages will be preferred

Page 115: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Encuesta totalmente sesgada hacia Javeros torpes como yo ;)

https://twitter.com/micael_gallego/status/787916015648768000

Page 116: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Según Anders, TS no es ni tipado

estático ni dinámico

https://twitter.com/ahejlsberg/status/792762247239995392?s=09

Page 117: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

¿TypeScript o JavaScript?

Depende del programador

y del proyecto

Page 118: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Hay quien considera que TypeScript lo

complica todo innecesariamente

(y es comprensible)

Page 119: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016 https://twitter.com/pinchito/status/654293829013643265

Page 120: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016https://twitter.com/CodingCarlos/status/780536033712738305

Page 121: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

TypeScript es un nuevo enfoque,

tu JavaScript de siempre pero con

una red de seguridad

Page 122: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Cada vez hay más JavaScripters

convencidos que ven

bondades en TypeScript

Page 123: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016https://twitter.com/javiervelezreye/status/793594508298551296

Page 124: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016https://twitter.com/maxlynch/status/733669142985908225

Page 125: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

https://medium.com/webpack/sustaining-webpack-for-the-future-part-1-32bea7f9e8a2#.7mbnncr89

Sean T. LarkinWebpack core developer

Page 126: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

La experiencia de un JavaScripter

cualquiera...

http://teropa.info/blog/2016/05/19/things-that-excite-me-about-angular-2.html

Page 127: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Llevo trabajando desde hace mucho tiempo

con lenguajes dinámicos (JavaScript,

Clojure, Ruby) sin verificación de tipos ni

autocompletado en mi editor.

Page 128: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Mi cerebro ha aprendido a trabajar sin esas

cosas. Sabía que estas funcionalidades son

las ventajas que aporta TypeScript, pero no

eran para mi. No creo que valga la pena

añadir nuevas herramientas y la gestión de

los tipos de las librerías.

Page 129: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Pero empecé a usar TypeScript en algunos

proyectos y algo ocurrió. Me olvidaba de

que TypeScript estaba ahí.

Seguía programando como había hecho

con JavaScript durante años.

Page 130: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

La gente dice que TypeScript es como una

pequeña capa encima de JavaScript, pero

hasta que no lo pruebas no te das cuenta.

Es sólo JavaScript pero con cinturón de

seguridad.

Page 131: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

He empezado a detectar problemas en

mis proyectos JavaScript donde he

pensado “podríamos haber detectado este

error antes si hubiéramos tenido un

interfaz TypeScript”

Page 132: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Cuál es la adopción de

TypeScript?

Page 133: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Es el lenguaje recomendado por Google

para aplicaciones Angular 2

Page 134: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

TypeScript

coffeescript

ES6

Google Trends

Page 135: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

TypeScript es para mi?

estarás pensando...

Page 136: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Depende de

lo torpe que

seas

Page 137: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Te he convencido…

Y lo sabes

Page 138: TypeScript: Un lenguaje aburrido para programadores torpes y tristes

MADRID · NOV 18-19 · 2016

Prueba, y me cuentas!

Gracias!por venir

@micael_gallego [email protected]

https://goo.gl/forms/i3m2SOFr8nAaZWB62

Feedback de lacharla y de TypeScript