Este documento presenta una introducción a TypeScript realizada por Micael Gallego. Explica qué es TypeScript y cómo extiende JavaScript para proporcionar tipos de datos y herramientas de desarrollo que ayudan a detectar errores. Muestra diversos ejemplos de cómo TypeScript verifica los tipos de datos y parámetros en funciones, variables y objetos.
What is a Angular Js ?
What is the main benefits of Angular Js ?
What is the difference between Angular js 1 and Angular js 2 ?
Structure of Angular Js ?
Choose of Language|Editor ?
Introduction of Components.
Template, Interpolation and Directives.
Data Binding and Pipes.
,Angular 2 is Javascript framework
In this session, we will learn what are observables and how we work with them in Angular - creating them and subscribing to them.And how we can deliver messages between different parts of your single-page application.
"Learn All Aspects Of Java Spring Framework step by step, Enhance your skills & Launch Your Career, On-Demand Course affordable price & classes on virtually every topic.Try Before You Buy
for java spring online training visit: https://goo.gl/P15Dbn"
LOG4j allows the developer to control which log statements are output with arbitrary granularity. It is fully configurable at runtime using external configuration files.
What is a Angular Js ?
What is the main benefits of Angular Js ?
What is the difference between Angular js 1 and Angular js 2 ?
Structure of Angular Js ?
Choose of Language|Editor ?
Introduction of Components.
Template, Interpolation and Directives.
Data Binding and Pipes.
,Angular 2 is Javascript framework
In this session, we will learn what are observables and how we work with them in Angular - creating them and subscribing to them.And how we can deliver messages between different parts of your single-page application.
"Learn All Aspects Of Java Spring Framework step by step, Enhance your skills & Launch Your Career, On-Demand Course affordable price & classes on virtually every topic.Try Before You Buy
for java spring online training visit: https://goo.gl/P15Dbn"
LOG4j allows the developer to control which log statements are output with arbitrary granularity. It is fully configurable at runtime using external configuration files.
There is a polarity formed among mobile app developers for two of these amazing languages. While both have their pros and cons, let's see which one wins.
SOLID Design Principles applied in JavaIonut Bilica
Video: https://www.youtube.com/watch?v=0cU-4LrcWI0
SOLID Design Principles applied in Java: rules to develop scalable and easily maintainable code
Speaker: Ionut Bilica - Senior Software Developer @ Luxoft Romania.
During this talk we will discuss about the SOLID Principles described by Robert C. Martin, applying them in the Java programming language. Each principle will be explained in detail, with practical Java examples.
We will asses how these principles make it easy to develop the software for the entire duration of the project, and how some problems can appear if these principles are not applied. We will present common code fragments that do not respect these principles, and we'll see how we can correct them. Taking the SOLID principles into consideration, we will also analyse a real Java project using a Static Code Analyzer tool (e.g. STAN).
Finally, we will discuss the strategies on how to apply these design principles in "greenfield" projects, as well as "legacy" projects, while offering some tips and tricks.
https://youtu.be/_yLt_abcK2w
Angular is a TypeScript-based open-source front-end platform that makes it easy to build applications with in web/mobile/desktop. The major features of this framework such as declarative templates, dependency injection, end to end tooling, and many more other features are used to ease the development.
Angular 7 is a Javascript framework built around the concept of components, and more precisely, with the Web Components standard in mind. It was rewritten from scratch by the Angular team using Typescript (although we can use it with ES5, ES6, or Dart as well).
Angular 7 is a big change for us compared to 1.x. Because it is a completely different framework than 1.x, and is not backward-compatible. Angular 7 is written entirely in Typescript and meets the ECMAScript 6 specification
angular interview questions and answers, angular 7 interview questions and answers, angular interview question, angular interview questions and answers for experienced, angular 7 interview questions, angular 6 interview questions,
angular interview questions, angular 6 interview questions and answers, angular 2 interview questions, angular7, angular 5 interview questions, angular interview, angular 2 interview questions and answers, angular questions and answers
There exist many code review checklist blogs/articles in the net telling standard Java best practices/guidelines; And I have come up with a checklist accommodating best practices from some of the recent popular books (reference given) and guidelines from Oracle (on Security).
This presentation introduces some advanced concepts of generics in Java. These slides introduce the following concepts:
- Generic classes and methods
- Type variable bounds
- Type erasure process
- Generics and inheritance
- Wildcard types
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Just a simple intro to typescript.
Most of the contents are of any OO language, hence slide contents are minimal. If anyone need any further help, reach me out - akhil2369492@gmail.com
-Akhil
Technical presentation given by Laurent Duveau at the House of Commons in Ottawa on April 25, 2017.
Thanks to Dan Wahlin for providing the original version of the slides. I added more content to fit in a 1h talk.
There is a polarity formed among mobile app developers for two of these amazing languages. While both have their pros and cons, let's see which one wins.
SOLID Design Principles applied in JavaIonut Bilica
Video: https://www.youtube.com/watch?v=0cU-4LrcWI0
SOLID Design Principles applied in Java: rules to develop scalable and easily maintainable code
Speaker: Ionut Bilica - Senior Software Developer @ Luxoft Romania.
During this talk we will discuss about the SOLID Principles described by Robert C. Martin, applying them in the Java programming language. Each principle will be explained in detail, with practical Java examples.
We will asses how these principles make it easy to develop the software for the entire duration of the project, and how some problems can appear if these principles are not applied. We will present common code fragments that do not respect these principles, and we'll see how we can correct them. Taking the SOLID principles into consideration, we will also analyse a real Java project using a Static Code Analyzer tool (e.g. STAN).
Finally, we will discuss the strategies on how to apply these design principles in "greenfield" projects, as well as "legacy" projects, while offering some tips and tricks.
https://youtu.be/_yLt_abcK2w
Angular is a TypeScript-based open-source front-end platform that makes it easy to build applications with in web/mobile/desktop. The major features of this framework such as declarative templates, dependency injection, end to end tooling, and many more other features are used to ease the development.
Angular 7 is a Javascript framework built around the concept of components, and more precisely, with the Web Components standard in mind. It was rewritten from scratch by the Angular team using Typescript (although we can use it with ES5, ES6, or Dart as well).
Angular 7 is a big change for us compared to 1.x. Because it is a completely different framework than 1.x, and is not backward-compatible. Angular 7 is written entirely in Typescript and meets the ECMAScript 6 specification
angular interview questions and answers, angular 7 interview questions and answers, angular interview question, angular interview questions and answers for experienced, angular 7 interview questions, angular 6 interview questions,
angular interview questions, angular 6 interview questions and answers, angular 2 interview questions, angular7, angular 5 interview questions, angular interview, angular 2 interview questions and answers, angular questions and answers
There exist many code review checklist blogs/articles in the net telling standard Java best practices/guidelines; And I have come up with a checklist accommodating best practices from some of the recent popular books (reference given) and guidelines from Oracle (on Security).
This presentation introduces some advanced concepts of generics in Java. These slides introduce the following concepts:
- Generic classes and methods
- Type variable bounds
- Type erasure process
- Generics and inheritance
- Wildcard types
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Just a simple intro to typescript.
Most of the contents are of any OO language, hence slide contents are minimal. If anyone need any further help, reach me out - akhil2369492@gmail.com
-Akhil
Technical presentation given by Laurent Duveau at the House of Commons in Ottawa on April 25, 2017.
Thanks to Dan Wahlin for providing the original version of the slides. I added more content to fit in a 1h talk.
TypeScript is a super set of JavaScript. This slide covers the key features of TypeScript including basics of typescript, basic types, Interfaces, Functions, Classes, Generics, Modules.
TypeScript - Silver Bullet for the Full-stack DevelopersRutenis Turcinas
TypeScript lets you write JavaScript the way you really want to Its a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. Enjoy writing JavaScript.
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
Microsoft Typescript is a statically typed compiled language to clean and a simple plain old JavaScript code which runs on any browser, in Node.js or in any JavaScript engine that supports ECMAScript 3 (or newer).
Видеозапись встречи:
http://getdev.net/Event/typescript
TypeScript - язык программирования от Microsoft, который является надмножеством JavaScript. Он поддерживает статическую типизацию, модули, определение классов и интерфейсов и транслируется в чистый JS. Спецификации языка открыты, а код компилятора распространяется под лицензией Apache.
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)Ontico
TypeScript – светлое будущее ES6 уже вчера.
Почему не "Кофе"? Чай полезней.
Что не так с Flow от Facebook?
Реальная практика использования: плюсы и минусы.
Не VisualStudio единым. Особенности работы в других IDE.
Интеграция с уже существующим JS кодом.
Использование совместно с RequireJS. Подводные камни.
Использование TypeScript совместно с React.
TypeScript и Angular.
Плюшки, которых нет в ES6/7 (пока нет): [static] enum, интерфейсы, private, protected, декораторы... Что дают и зачем?
One Does Not… write TypeScript so easily! In this Meetup talk, I'll share the tricks and pain points I had to learn in my first 6 months of professional TypeScript. The goal is to spare the reader many hours of Stack Overflow...
The slides I was using when delivering a one day seminar for learning the TypeScript programming language. The seminar was delivered as part of the Expert Days 4 days conference that took place in 12/2015 in Israel.
More information about the Front End Development course I deliver can be found at fed.course.lifemichael.com
Presented at Web Unleashed on September 16-17, 2015 in Toronto, Canada
More info at www.fitc.ca/webu
Why TypeScript?
with Jeff Francis
OVERVIEW
TypeScript is a type-checked superset of JavaScript that benefits medium-sized to complex JavaScript projects. Why would you want to learn a new language, instead of another JavaScript framework? You have all this existing JavaScript code, so how can you adopt something new without throwing the old stuff out?
This session is about the benefits of using TypeScript on top of JavaScript in your projects, and demonstrate step by step ways of migrating an existing JavaScript project to TypeScript. We will dive into code generated by the compiler and look at resources and tools that make working in TypeScript a pleasurable experience.
OBJECTIVE
To understand when it’s a good idea to use TypeScript.
TARGET AUDIENCE
JavaScript developers.
ASSUMED AUDIENCE KNOWLEDGE
Intermediate JavaScript experience.
FIVE THINGS AUDIENCE MEMBERS WILL LEARN
The basics of TypeScript – types, classes, modules, and functions
How TypeScript’s design makes getting started simple and helps projects
What compiled TypeScript looks like and how to debug
What tools can help take advantage of TypeScript’s type information
How to migrate a JavaScript project to TypeScript
Application Insight + stream analytics + Power BI[T]echdencias
¿Qué navegadores acceden a mi web? ¿A qué idiomas he de traducir mi aplicación? ¿Cuáles son las horas de mayor tráfico? ¿Alguien utiliza esta funcionalidad que tanto me cuesta mantener?¿...?
En esta sesión de #Codemotion2016, Carmen y Nacho nos explican cómo monitorizar nuestra web o app, pudiendo dar así desde una respuesta más rápida a las posibles carencias funcionales, hasta ahorrarnos unos cuantos eurillos en infraestructura, o simplemente saber el mítico quien, cuando, donde y porque utilizan mi web o app. Todo esto, y alguna cosilla más, con "4 líneas" de código y otros tantos "clicks"!
¡Tus usuarios te lo agradecerán!
Manten tus datos agiles con event-sourcingEmma Sesmero
Casi todas las aplicaciones hoy en día guardan información en bases de datos, acceden a ella, cambian su estado... Pero, ¿qué pasa cuando necesitamos volver a un estado anterior? ¿O si necesito la historia del objeto? ¿Cómo ha llegado al estado actual? Esta información se pierde. ¿Y si queremos procesar la información para adaptarla a un nuevo caso de uso? A veces es posible y simple, y otras veces no tanto. Event-sourcing permite guardar el historial, recrear situaciones y crear nuevos casos de uso fácilmente.
Introducción a Programa-me - Concurso español de programacion (actualizado) José Ráez Rodríguez
Guía introductoria a Programa-me, concurso de programación para alumnos de FP en España. Consejos y pistas para practicar y afrontar el concurso para estudiantes y profesores
Introducción a Programa-me - Concurso español de programacionJosé Ráez Rodríguez
Por favor, mirad la version actualizada: https://es.slideshare.net/JosRezRodrguez/introduccin-a-programame-concurso-espaol-de-programacion-actualizado-82662173
Guía introductoria a Programa-me, concurso de programación para alumnos de FP en España. Consejos y pistas para practicar y afrontar el concurso para estudiantes y profesores
Cómo incluir videoconferencia en tu web usando la tecnología WebRTC y servidores de media open source y comerciales. Se explora en más detalle OpenVidu, una plataforma de videoconferencias con ediciones open source y comerciales
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
Ciclo de vida del software, repositorios de código, análisis estático de código, pruebas software, integración continua, entrega continua, despliegue continuo, DevOps.
Curso de Angular 9 para desarrollo de aplicaciones SPA (Single Page Application).
● Tema 1: Introducción a Angular: TypeScript y herramientas
● Tema 2: Componentes
● Tema 3: REST y Servicios
● Tema 4: Aplicaciones multipágina: Router
● Tema 5: Librerías de componentes
● Tema 6: Publicación
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Micael Gallego
Una vista panorámica de la situación actual de la concurrencia y la asincronía. Comparando modelos de concurrencia y técnicas de programación asíncrona en lenguajes de programación como Java, C/C++ y JavaScript.
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
Charla impartida entre Pablo Chico y Micael Gallego en la que se muestran algunas herramientas para mejorar la experiencia de desarrollo de aplicaciones cloud native para Kubernetes. Concretamente, se presenta cómo okteto puede reducir el tiempo empleado en el ciclo de change, build, push, deploy de pods Java en Kubernetes usando la sincronización de ficheros.
Ejemplos de código en https://github.com/micaelgallego/k8s-dev-tools-codemo19
Testing cloud and kubernetes applications - ElasTestMicael Gallego
Kubernetes applications are complex distributed systems composed by several microservices. When some end to end test is failing in these kind of applications, root cause is difficult without good observability tools. In this presentation, several tools are presented to make easier root cause analysis of cloud and kubernetes applications. One of the most interesting ones is ElasTest, a platform that integrates several open source tools to provide observability to e2e testing of complex distributed systems.
Kubernetes es una plataforma cada vez más utilizada para poner en producción aplicaciones y servicios. Todos los grandes proveedores cloud la ofrecen y también puede instalarse on premises. En estas slides presentaremos los concetos básicos de la plataforma y aprenderemos a desplegar aplicaciones.
Las slides se han usado en un curso gratuito que ha sido grabado y publicado aquí: https://www.youtube.com/watch?v=5ovqsvqwtZM
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
Kubernetes se ha convertido en una de las plataformas preferidas para la puesta en producción de aplicaciones escalables y tolerantes a fallos. Estas características son muy interesantes, pero suponen un reto para los sistemas de integración continua. ¿Cómo se prueba de forma automática que una aplicación se comporta como se espera cuando existen fallos o cuando la carga crece de forma importante? Y si no lo hace, cuál es el motivo? El Caos testing nos ayuda a simular fallos (matar contenedores, cortar la red...) pero además necesitamos monitorizar la aplicación para conocer su comportamiento interno. En la presentación damos un repaso por las técnicas y herramientas más utilizadas en este ámbito.
OpenVidu es una plataforma para incorporar videoconferencia y video streaming en tus aplicaciones web. Es muy fácil de usar y tienes multitud de ejemplos con diferentes tecnologías. Además, es open source. Qué más se puede pedir?
Estas slides son una presentación a las pruebas de software. Para qué sirven, qué tipos de pruebas existen, qué librerías, frameworks y herramientas se pueden utilizar para implemenar pruebas automatizadas, etc.
Node.js es una tecnología cada vez más popular para el desarrollo de servicios web. Grandes abanderados de Java como Netflix están usando cada vez más JavaScript para implementar parte de su backend. Pese a esta realidad, muchos javeros como yo no quieren tocar JavaScript ni con un palo, y cuando hay que hacerlo, sólo en el browser.
Si eres javero y no te gusta JavaScript, en esta presentación tendrás una visión general sobre cómo desarrollar servicios web con Node.js. Verás cómo con TypeScript, async/await y frameworks como Nest y TypeORM no echarás de menos a Spring y JPA. Pero lo mismo pasa al revés, verás cómo en Java también puedes implementar apps con los mismos principios reactivos y funcionales tan comunes en Node.js.
Testing fácil con Docker: Gestiona dependencias y unifica entornosMicael Gallego
Docker es una tecnología que permite empaquetar el software de forma que se pueda ejecutar de forma sencilla y rápida, sin instalación y en cualquier sistema operativo. Es como tener cualquier programa instalado en su propia máquina virtual, pero arranca mucho más rápido y consume menos recursos. Docker está cambiando la forma en la que desplegamos software, pero también está afectando al propio proceso de desarrollo y particularmente al testing.
En este taller pondremos en práctica cómo usar Docker para facilitar la implementación de diferentes tipos de tests y su ejecución tanto en el portátil como en el entorno de integración continua. Aunque las técnicas que veremos se podrán aplicar en cualquier lenguaje de programación, los ejemplos estarán basados en Java y en JavaScript.
Using Docker to build and test in your laptop and JenkinsMicael Gallego
Docker is changing the way we create and deploy software. This presentation is a hands-on introduction to how to use docker to build and test software, in your laptop and in your Jenkins CI server
Como ser mas productivo en el desarrollo de aplicacionesMicael Gallego
Charla impartida en la Universidad Politécnica de Madrid presentando algunas técnicas y herramientas para ser más productivo en el desarrollo de aplicaciones
Docker para Data Scientist - Master en Data Science URJCMicael Gallego
Presentación de Docker en el Master en Data Science de la URJC en la asignatura de Arquitecturas en la nube. En esta asignatura hablamos de AWS, Azure, Docker, Kubernetes, Mesos
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...Micael Gallego
En este artículo se describe una metodología docente que pretende emular en el aula el trabajo que los alumnos realizarán cuando finalicen sus estudios. Esta metodología combina el Aprendizaje Basado en Proyectos y la Clase Invertida y está diseñada para la asignatura de Desarrollo Web del Grado en Ingeniería del Software de la URJC. La metodología propuesta se aplicará en el curso 2016/2017 y supone una evolución de una metodología previa, aplicada en el curso 2015/2016 en la misma asignatura. Se espera que los cambios introducidos en esta nueva metodología mejoren los resultados obtenidos en el curso pasado.
Los desafíos de calidad de software que nos trae la IA y los LLMsFederico Toledo
En esta charla, nos sumergiremos en los desafíos emergentes que la inteligencia artificial (IA) y los Large Language Models (LLMs) traen al mundo de la calidad del software y el testing. Exploraremos cómo la integración, uso o diseño de modelos de IA plantean nuevos retos, incluyendo la calidad de datos y detección de sesgos, sumando la complejidad de probar algo no determinístico. Revisaremos algunas propuestas que se están llevando adelante para ajustar nuestras tareas de testing al desarrollo de este tipo de sistemas, incluyendo enfoques de pruebas automatizadas y observabilidad.
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
40. 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
42. 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'
43. 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'
44. MADRID · NOV 18-19 · 2016
Autocompletado de métodos
●
Como sabe el tipo de la variable y los
métodos que tiene, te ayuda
45. MADRID · NOV 18-19 · 2016
Variables no declaradas
●
Si intentas usar una variable no declarada,
te avisa
ERROR: Cannot
find name 'nam'
46. 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
47. MADRID · NOV 18-19 · 2016
Te has dado cuenta?
Era código JavaScript
estándar
Empezamos con las
extensiones de TypeScript
48. 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
49. 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
50. 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'
51. 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
52. 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
53. 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.
54. 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'
55. MADRID · NOV 18-19 · 2016
Arrays
●
TS también nos ayuda con los arrays
Tipo string
Tipo string[]
Tipo string
56. MADRID · NOV 18-19 · 2016
Arrays
●
Incluso con sus métodos
ERROR: Argument of type
'string' is not
assignable to parameter
of type 'boolean'
57. MADRID · NOV 18-19 · 2016
¿Has visto todo lo que
te puede ayudar TypeScript
sabiendo el tipo?
58. MADRID · NOV 18-19 · 2016
Te gustaría que TS te
avisara cuando no sabe el
tipo de una variable?
59. 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
60. 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
61. 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
62. 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
63. 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
64. 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
65. 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
66. MADRID · NOV 18-19 · 2016
y si en mi código JS un
parámetro id puede ser
number o string?
68. MADRID · NOV 18-19 · 2016
TypeScript
no te obliga a cambiar
tu código JavaScript
69. MADRID · NOV 18-19 · 2016
Tiene un sistema de tipos
adaptado a los idiomas
JavaScript
70. 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
71. 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
72. 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 enTypeScript
74. 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
75. MADRID · NOV 18-19 · 2016
Tipos de funciones
●
Podemos declarar el tipo de la función de
forma explícita
Tipo de la función
Parámetros =>
Tipo de retorno
76. MADRID · NOV 18-19 · 2016
Tipos de funciones
●
Ahora con parámetros
77. 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'
78. 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
80. MADRID · NOV 18-19 · 2016
Tipos de objetos
●
En los objetos literales se infiere el tipo de
la inicialización de la variable
81. 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; }'
82. 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
83. 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
84. MADRID · NOV 18-19 · 2016
Tipos de objetos
●
Se le puede dar un nombre al tipo de objeto
Tipo de
objeto
85. MADRID · NOV 18-19 · 2016
Tipos de objetos
●
Se le puede definir propiedades opcionales
Opcional
86. 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...
91. MADRID · NOV 18-19 · 2016
Herencia de clases en ES6
92. MADRID · NOV 18-19 · 2016
Creación de objetos en ES6
93. 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
94. MADRID · NOV 18-19 · 2016
TypeScript nos puede
ayudar a implementar clases
y crear objetos
(si queremos usarlas)
95. 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
96. MADRID · NOV 18-19 · 2016
Clases en TypeScript
Declaración
de atributos
97. 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)
98. 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
99. 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
100. MADRID · NOV 18-19 · 2016
Interfaces en TypeScript
●
Las clases pueden implementar interfaces
●
TS nos avisa si la clase no cumple la
estructura del interfaz ERROR: Class 'Person'
incorrectly implements
interface 'Named'.
Property 'name' is missing
in type 'Person'
101. MADRID · NOV 18-19 · 2016
Tipos de las
Librerías
Bibliotecas?
102. 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
103. MADRID · NOV 18-19 · 2016
Librerías de terceros?
●
La comunidad ha definido el tipo de 2344
librerías
https://www.npmjs.com/~types
104. MADRID · NOV 18-19 · 2016
Librerías de terceros?
●
La comunidad ha definido el tipo de 2344
librerías
https://www.npmjs.com/~types
105. MADRID · NOV 18-19 · 2016
Librerías de terceros?
●
Algunas incluso están implementadas en TS
https://www.npmjs.com/~types
106. 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/
108. 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)
109. MADRID · NOV 18-19 · 2016
Interesante...
Y quién ha hecho
esto?
111. 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
112. MADRID · NOV 18-19 · 2016
Volvemos a la eterna
discusión de qué lenguajes son mejores?
Tipado estático vs dinámico?
113. 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
114. MADRID · NOV 18-19 · 2016
Uncle Bob
Robert 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
115. MADRID · NOV 18-19 · 2016
Encuesta totalmente sesgada hacia Javeros torpes como yo ;)
https://twitter.com/micael_gallego/status/787916015648768000
116. 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
117. MADRID · NOV 18-19 · 2016
¿TypeScript o JavaScript?
Depende del programador
y del proyecto
118. MADRID · NOV 18-19 · 2016
Hay quien considera que TypeScript lo
complica todo innecesariamente
(y es comprensible)
119. MADRID · NOV 18-19 · 2016https://twitter.com/pinchito/status/654293829013643265
120. MADRID · NOV 18-19 · 2016https://twitter.com/CodingCarlos/status/780536033712738305
121. MADRID · NOV 18-19 · 2016
TypeScript es un nuevo enfoque,
tu JavaScript de siempre pero con
una red de seguridad
122. MADRID · NOV 18-19 · 2016
Cada vez hay más JavaScripters
convencidos que ven
bondades en TypeScript
123. MADRID · NOV 18-19 · 2016https://twitter.com/javiervelezreye/status/793594508298551296
124. MADRID · NOV 18-19 · 2016https://twitter.com/maxlynch/status/733669142985908225
125. MADRID · NOV 18-19 · 2016
https://medium.com/webpack/sustaining-webpack-for-
the-future-part-1-32bea7f9e8a2#.7mbnncr89
SeanT. Larkin
Webpack core developer
126. 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
127. 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.
128. MADRID · NOV 18-19 · 2016
Mi cerebro ha aprendido a trabajar sin esas
cosas. Sabía que estas funcionalidades son
las ventajas que aportaTypeScript, 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.
129. MADRID · NOV 18-19 · 2016
Pero empecé a usarTypeScript en algunos
proyectos y algo ocurrió. Me olvidaba de
queTypeScript estaba ahí.
Seguía programando como había hecho
con JavaScript durante años.
130. 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.
131. 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
interfazTypeScript”
132. MADRID · NOV 18-19 · 2016
Cuál es la adopción de
TypeScript?
133. MADRID · NOV 18-19 · 2016
Es el lenguaje recomendado por Google
para aplicaciones Angular 2
134. MADRID · NOV 18-19 · 2016
TypeScript
coffeescript
ES6
GoogleTrends
135. MADRID · NOV 18-19 · 2016
TypeScript es para mi?
estarás pensando...
136. MADRID · NOV 18-19 · 2016
Depende de
lo torpe que
seas
137. MADRID · NOV 18-19 · 2016
Te he
convencido…
Y lo sabes
138. MADRID · NOV 18-19 · 2016
Prueba, y
me cuentas!
Gracias!
por venir
@micael_gallego micael.gallego@urjc.es
https://goo.gl/forms/i3m2SOFr8nAaZWB62
Feedback de la
charla y de TypeScript