Soporte experimental para async functions
Se introduce el soporte experimental para funciones asincronas. Podemos esperar de una función asincrona, que no bloque la ejecución normal del programa. Esto se logra mediante una implementación de promesas compatibles con ES6.
var llamadaAlServidor: Promise<string>; async function ConsumirDatos(): Promise<string> { var datos = await llamadaAlServidor; return "Datos : " + datos; } class C { async m(): Promise<string> { var i = await llamadaAlServidor; // Se suspende la ejecución hasta que se resuelva llamadaAlServidor return "Datos : " + i; } async p(): Promise<string> { var i = await llamadaAlServidor; // Se suspende la ejecución hasta que se resuelva llamadaAlServidor return "Datos : " + i; } }
Merging ambient class and interface declaration
Podemos ampliar una clase que machee por nombre y namespace, con otras interfaces
declare class Foo { public x : number; } interface Foo { y : string; } function bar(foo : Foo) { foo.x = 1; // OK, declared in the class Foo foo.y = "1"; // OK, declared in the interface Foo }
User-defined type guard functions
A partir de ahora podemos usar los type guard, para asegurar los tipos de nuestros parámetros, y de esta forma realizar un casting, en los bloques de código que precisemos.
class Cat { name: string; meow() { } } class Dog { name: string; wow() { } } function isDog(a: any): a is Dog { return a.name === 'kitty'; } function isCat(a: any): a is Cat { return a.name === 'kitty'; } var x: Cat | Dog; x = new Cat(); if (isCat(x)) { x.meow(); // OK, es del tipo Cat en este bloque } if (isDog(x)) { x.wow(); // OK, es del tipo Dog en este bloque }
Propiedad exclude en nuestro archivo tsconfig.json
A la hora de indicar que archivos queremos compilar mediante el uso de *.ts, podemos indicar que queremos compilar todos los archivos que se encuentran en el directorio padre y todos sus subdirectorios.
Ahora ademas, tenemos la propiedad exclude, mediante la cual podemos excluir carpetas, files y rutas completas.
{ "compilerOptions": { "out": "test.js" }, "exclude": [ "node_modules", "test.ts", "utils/t2.ts" ] }
Exclude no admite *
–init command line option
Ejecutando el comando tsc –init, typescript creara por nosotros un archivo. tsconfig.json. También podremos pasar mas argumentos junto con –init, para que nuestro archivo de configuración los almacene.