Tengo varios manuales de desarrollo en casa y me gusta leerlos, incluso varias veces, cuando tengo tiempo. ¿La razón? Pues simplemente que con el transcurso del tiempo a veces no utilizamos ciertas partes de los lenguajes y se nos van olvidando.

Esta semana he vuelto a leer “Pro TypeScript” de Steve Fenton y he vuelto a descubrir muchas partes de TypeScript que tenía olvidadas. También he decidido compartirlas aquí por si alguien más siente curiosidad o le apetece averiguar cuales son sin leerse el libro.

Union Types

Los tipos de unión no son mas que tipos de variables que permiten varias definiciones. Es decir una variable que por ejemplo pueda ser boolean o número y nada más que esas dos opciones. Es cierto que tenemos el tipo any, pero habrá casos en los que no queramos nada más que permitir dos tipos.

Esto se hace así:

let union: boolean | number;

union = 5;

union = true;

Destructuring

La desestructuración no es más que dividir un array en varias variables. Algo que llegado el caso puede ser muy útil sin tener que recurrir a un map o un filter. Y es algo tan simple de implementar como lo siguiente:

const medidas = [1,3,5,10,15,20];

const desestructurado= [primeraMedida, segundaMedida, ...resto];

console.log(primeraMedida);//1

console.log(segundaMedida);//3

console.log(resto);//[5,10,15,20]

Mixins

Estas mezclas que toman su nombre de un tipo de helado que es lo que conocemos aquí como helado con toppings lo que permiten sería simular una herencia múltiple, algo no permitido en Javascript y que tampoco sería herencia tal cual.

La diferencia entre herencia y mixin en Javascript se explica muy fácil con el siguiente ejemplo: tenemos la clase Coche que hereda de la clase Vehículo porque un coche es un vehículo. Sin embargo el chasis sería un mixin, ya que un coche tiene un chasis, no es un chasis.

La implementación es muy sencilla:

class Actor implements Acts{act:() =>void; }

applyMixins(Actor, [Acts]);

Sealing Objects

No tengo claro como traducir este concepto, pero al final es la capacidad de vitar que ciertos objetos puedan ser extendidos y es tan simple como:

class Actor{ constructor(public name:string){}}

const actor = new Actor('Eddie Redmayne');

Object.seal(actor);

Acceso a propiedades del dispositivo.

A través del navegador se puede tener acceso a propiedades interesantes del dispositivo sin que sea un desarrollo muy complicado, como por ejemplo:

Geolocalización.

navigator.geolocation.getCurrentPosition(position);

Estado de la batería.

const bateria : BatteryManager = (<any>navigator).battery || (<any>navigator).mozBattery || (<any>navigator.webkitBattery;

const carga = Math.floor(battery.level * 100);

Sensores.

Existen multitud de sensores como el de proximidad, luminosidad, movimiento, orientación y otros. El acceso a los mismos se consigue a través de las utilidades tipo addEvent tras importar la libería ‘./Listing-6–011’.

Performance.

El rendimiento de nuestros métodos se puede medir de forma muy simple, se necesita solo importar:

import {Performance} from './Listing-8-010';

Y luego se puede medir con las siguientes líneas, justo al final del método que implementemos:

const rendimiento= Performance.run(nombreFuncion);

console.log(rendimiento.totalRunTime+ ' ms');

Y esto son todos los puntos que hoy han llamado mi atención en la relectura de este manual que recomiendo a todo aquel que le apetezca profundizar un poco más en TypeScript.

Espero que esta publicación te haya sido útil. Si es así, por favor, dale un voto positivo y compártelo en tus redes sociales. Si lo deseas, puedes encontrarme en Twitter y en Linkedin

Software Developer at Sngular. PhD on Immunology, always learning and trying to share knowledge. Microsoft Most Value Professional on Developer Technologies.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store