Germán Küber

Blockchain Developer / Microsoft Architect

TypeScript 1.4 (Nuevas características) 2 – 2

Declaraciones let

Las declaraciones “var” en JavaScript, son declaraciones de ámbito, lo que permite que nuestra variable sea accedida desde lugares que no debería de serlo.

console.log(x); 
var x = 'Saludo';

Esta declaración en Js no nos devolverá un error, aunque sin lugar a duda se comportara de una manera muy distinta a la que esperamos.

Con el objetivo de aclarar un poco las cosas ahora podemos usar let

if (variable) {
    console.log(x); // Error, se intenta usar x antes de ser declarada
    let x = 'Saludo';
}
else {
    console.log(x); // Error, x no se declara en el bloque
}

(solo podemos hacer uso de let cuando se utiliza ECMAScript 6 (–target ES6))

Const

Una variable del tipo const, solo puede ser asignada en el momento de su declaración. Luego de ser declarada no podrá ser modificada.

const halfPi = Math.PI / 2;
halfPi = 2; // Error, Una constante no puede ser asignada

(solo podemos hacer uso de const cuando se utiliza ECMAScript 6 (–target ES6))

Template strings

Una manera elegante y optimizada de realizar nuestras concatenaciones.

var name = "TypeScript";
var mensaje  = `Hola, ${name}! Tu nombre tiene ${name.length} caracteres`;

 

Type Aliases

Podemos definir alias para nuestos tipos y luego utilizar la palabra reservada type

type PrimitiveArray = Array<string|number|boolean>;
type MyNumber = number;

type Callback = () => void;
var funcion: Callback;
funcion = () => { }; //OK
funcion = 2; //Error, funcion es del tipo Callback

var numero: MyNumber;
numero = 1; //Ok
numero = "1"; //Error, funcion es del tipo number

Const Enum

Las enumeraciones sin lugar a duda son una herramienta muy utilizada (si no las estas utilizando te recomiendo que leas mas sobre ellas), pero en algunos casos las aplicaciones no necesitan todo el código generado que typescript provee con el fin de tener nuestras enumeraciones en código.

La mejor forma de entenderlo es con un ejemplo:

Primero daremos un ejemplo de una declaración sin de enum sin el const

TypeScript

enum animales { Perro, Gato, Caballo, Elefante }
var animal = animales.Perro;

JavaScript generado

var animales;
(function (animales) {
    animales[animales["Perro"] = 0] = "Perro";
    animales[animales["Gato"] = 1] = "Gato";
    animales[animales["Caballo"] = 2] = "Caballo";
    animales[animales["Elefante"] = 3] = "Elefante";
})(animales || (animales = {}));
var animal = animales.Perro;

Ejemplo utilizando const enum

const enum animales { Perro, Gato, Caballo, Elefante }
var animal = animales.Perro;

JavaScript generado

var animal = 0 /* Perro */;

Sin lugar a duda no vamos ver diferencia mientras desarrollemos, pero si existirá una gran diferencia de cantidad de código auto generado al final del día.

-noEmitOnError commandline option

Por defecto TypeScript compila nuestro código (genera los archivos .js), aunque existan errores.
Por ejemplo si tenemos una variable del tipo number, y le asignamos un string, vamos a ver un error en nuestro editor, aunque TypeScript ignora este error y compila de todas formas nuestros archivos javascript.
En algunos escenarios esto puede ser lo que queramos, pero en escenarios mas productivos sin lugar a duda esta no es una opción.

Así se veria nuestro archivo tsconfig.json

{
  "compilerOptions": {
    "noEmitOnError": false,
  }
}

 

AMD Module names

Por defecto los módulos AMD se generan de modo anónimos. Esto puede ocasionar problemas cuando utilizamos otras herramientas para procesar módulos.
La nueva etiqueta nos da la posibilidad de asignarle un nombre a nuestro modulo.

TypeScript

//// [amdModule.ts]
///<amd-module name='NamedModule'/>
export class C {
}

JavaScript generado

//// [amdModule.js]
define("NamedModule", ["require", "exports"], function (require, exports) {
    var C = (function () {
        function C() {
        }
        return C;
    })();
    exports.C = C;
});

 

Translate »