<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>javascript Archives - Software Evolutivo</title>
	<atom:link href="https://softwareevolutivo.com.ec/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>https://softwareevolutivo.com.ec/tag/javascript/</link>
	<description>Consultora de Software Empresarial</description>
	<lastBuildDate>Thu, 14 Jul 2022 02:34:37 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://softwareevolutivo.com.ec/wp-content/uploads/2024/03/cropped-Perfil-Redes-Iso-32x32.png</url>
	<title>javascript Archives - Software Evolutivo</title>
	<link>https://softwareevolutivo.com.ec/tag/javascript/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[:es]TypeScript: Introducción[:]</title>
		<link>https://softwareevolutivo.com.ec/introduccion-a-typescript/</link>
					<comments>https://softwareevolutivo.com.ec/introduccion-a-typescript/#respond</comments>
		
		<dc:creator><![CDATA[administracion@softwareevolutivo.com.ec]]></dc:creator>
		<pubDate>Mon, 23 Oct 2017 16:45:26 +0000</pubDate>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Tendencias]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://softwareevolutivo.com.ec/?p=301</guid>

					<description><![CDATA[<p>Cada día más y más desarrolladores optan por elegir JavaScript como su lenguaje o uno de sus lenguajes de programación favoritos. De la misma manera, un incontable número de frameworks y librerías aparecen día a día. Y es que hace mucho JavaScript dejó de utilizarse solamente para validaciones y animaciones en el navegador, siendo actualmente</p>
<p>The post <a href="https://softwareevolutivo.com.ec/introduccion-a-typescript/">[:es]TypeScript: Introducción[:]</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="301" class="elementor elementor-301">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-25af0688 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="25af0688" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3d1c41ff" data-id="3d1c41ff" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-32b65ae3 elementor-widget elementor-widget-text-editor" data-id="32b65ae3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>[:es]Cada día más y más desarrolladores optan por elegir JavaScript como su lenguaje o uno de sus lenguajes de programación favoritos. De la misma manera, un incontable número de frameworks y librerías aparecen día a día. Y es que hace mucho JavaScript dejó de utilizarse solamente para validaciones y animaciones en el navegador, siendo actualmente uno de los principales lenguajes para aplicaciones completas, robustas y ligeras tanto en front-end como en back-end.</p>
<p>Pero no todo es color de rosa con JavaScript, las diversas formas de programar, los patrones de diseño que permite y su tipado blando, se pueden convertir en un verdadero problema cuando no se utilizan de una manera correcta. La solución a este problema viene por parte Microsoft con el superset TypeScript, que junto al tipado y otras características, está tomando bastante fuerza entre los desarrolladores JavaScript.</p>
<h2>&nbsp;</h2>
<h2><b>¿Que es TypeScript?</b></h2>
<p>TypeScript es un superset de JavaScript, es decir, tiene todas las funcionalidades de JavaScript y además incorpora una capa de funcionalidades adicionales.</p>
<p>Y como dice Bill Wagner en su artículo<a href="https://msdn.microsoft.com/es-es/magazine/dn745863.aspx" target="_blank" rel="noopener noreferrer"> Mejora tu inversión en JavaScript con TypeScript</a>, <i>‘Si usas JavaScript, ya escribes en TypeScript’</i> pero <i>‘Esto no quiere decir que escribas bien en TypeScript y aproveches todas sus características’.</i></p>
<h3>&nbsp;</h3>
<h3><b>¿Desaparece la flexibilidad?</b></h3>
<p>Pues no. Como lo mencionamos se agrega una capa de características y funcionalidades, pero se mantiene la flexibilidad de JavaScript. Tanto es así que si escribimos código en el estándar JavaScript ES6(ECMAScript6), ES5 o TypeScript el compilador lo entenderá y lo pasará todo a ES5 el cual es entendido por los browser actuales.</p>
<h3>&nbsp;</h3>
<h3><b>Características principales.</b></h3>
<h4><b>Variables Tipadas</b></h4>
<p>La principal característica de TypeScript es que nos permite definir el tipo de las variables que vamos a usar. Podemos usar los<a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" rel="noopener noreferrer"> tipos de variables básicos</a> (Boolean, Number, String, Any, Array, Tuple, Void, Null, Undefined) o crear clases y declarar objetos de estas clases.</p>
<p>En el siguiente ejemplo se muestra el uso de variables tipadas en una función pero se han introducido dos errores para observar la utilidad de usar tipado.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">class MyClass{
  myArray:Array&lt;number&gt;;
  constructor(someArg:string){
    this.myArray = someArg;
  }
  someMethod(){
    for(let item of this.myArray){
      console.log(item);
    }
  }
}

let someVar:number = 123456;
let myClassInstance:MyClass = new MyClass(someVar);
myClassInstance.someMethod();</pre>
<p>En el ejemplo anterior recibo 2 errores en tiempo de compilación:</p>
<ul>
<li>En primer lugar, me dirá que le estoy intentando asignar un string a un array (primer error introducido a propósito en el constructor)</li>
<li>En segundo lugar, me dice que no puedo pasar someVar al constructor de MyClass, porque NO es del tipo esperado.</li>
</ul>
<h4><b>Datos públicos y privados en una clase</b></h4>
<p>En TypeScript podemos definir si una variable es pública o privada, en el caso de ser privada no se puede acceder directamente a esta variable fuera de la clase en la que fué declarada.</p>
<h4><b>Decorators</b></h4>
<p>La otra característica principal de TypeScript es el<a href="https://en.wikipedia.org/wiki/Decorator_pattern"> patrón de diseño Decorator</a> que sirve para añadir funcionalidad a un objeto de forma dinámica. Los decoradores se pueden utilizar antes de declarar una clase, propiedad, método o parámetro, y utilizan la sintaxis @myDecorator(args) como lo veremos a continuación.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">@SomeClassDecorator(/*some parameters*/)
class MyDecoratedClass {

  @SomePropertyDecorator()
  myDecoratedProperty: string;

  @SomeMethodDecorator()
  myDecoratedMethod(@myParamDecorator() decoratedParam: number) {
  }
}</pre>
<p>Un ejemplo del uso de Decorators con TypeScript se da en Angular al declarar un componente:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">@Component({
  selector: 'example-component',
  template: '&lt;div&gt;Woo a component!&lt;/div&gt;'
})

export class ExampleComponent {
  constructor() {
    console.log('Hey I am a component!');
  }
}</pre>
<h4><b>Inyección de dependencias</b></h4>
<p>La inyección de dependencias es mucho más sencilla usando TypeScript que en ES6 como lo veremos a continuación con un ejemplo en Angular.</p>
<p>Con ES6:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">import {UserService} from './user.service';

export class AnotherService {
  constructor(userService) {
    this.userService = userService;
  }
}

AnotherService.parameters = [[UserService]];</pre>
<p>Con TypeScript</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">import {UserService} from './user.service';

export class AnotherService {
  constructor(private userService:UserService) {}
}</pre>
<h3>&nbsp;</h3>
<h3><b>Conclusión</b></h3>
<p>Las características mencionadas a lo largo de este artículo, más muchas otras más que posee TypeScript, lo hacen un lenguaje ordenado y que provee características que nos ayudarán entre otras cosas a detectar errores de manera temprana en tiempo de compilación, simplificar el código con los decorators e inyección de dependencias, y, sobre todo si se lo usa de forma adecuada nos ayudará a solventar problemas de escalabilidad y mantenibilidad del código.</p>
<p><strong>Referencias:</strong></p>
<p><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" rel="noopener noreferrer">https://www.typescriptlang.org/docs/handbook/basic-types.html</a></p>
<p><a href="https://bloginspanish.wordpress.com/tag/typescript/" target="_blank" rel="noopener noreferrer">https://bloginspanish.wordpress.com/tag/typescript/</a></p>
<p><a href="https://www.mmfilesi.com/blog/typescript-1-introduccion/" target="_blank" rel="noopener noreferrer">https://www.mmfilesi.com/blog/typescript-1-introduccion/</a></p>
<p><a href="http://blog.enriqueoriol.com/2016/06/angular2-aprendo-es6-o-typescript.html" target="_blank" rel="noopener noreferrer">http://blog.enriqueoriol.com/2016/06/angular2-aprendo-es6-o-typescript.html</a></p>
<p>&nbsp;[:]</p>
<p></p>
<p></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softwareevolutivo.com.ec/introduccion-a-typescript/">[:es]TypeScript: Introducción[:]</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softwareevolutivo.com.ec/introduccion-a-typescript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
