Germán Küber

Blockchain Developer / Microsoft Architect

TypeScript 1.6 (Nuevas características) 3 – 3

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.

Translate »