Si algo tengo que reconocer es que Typescript nos permite sentir que tenemos el control en javascript y eso es gracias también a los typings (tsd) , pero algunas librerías no tienen los tiene typings, yo me he visto en necesidad de escribir los typings de la librería rdjs.

Creando los typings

Para crear nuestro typings de la librería, tenemos que tener nuestra librería instalada por npm y dentro de de nuestro proyecto creamos un directorio llamado typings y dentro otro con el nombre de la libreria que queremos en mi caso rdjs

typings/index.d.ts
typings/rdjs/index.dt.ts

Typescript interpreta los archivos * .d.ts como archivos de declaración y estos describen los métodos que expone la librería sin la implementación de ellos.

En el directorio de typings tenemos un index.d.ts que contendrá una referencia a cada uno de nuestros archivos de declaración.

En este caso, typings/index.d.ts contendrá una referencia al archivo rdjs/index.d.ts.

/// <reference path="rdjs/index.d.ts" />

Definiendo los typings

Todas las definiciones de los typings la realizare en typings/rdjs/index.d.ts, lo primero que debemos hacer es crear un ambient module los cuales son declaraciones de tipo que no definen nada de lo que el código realmente hace, sino que simplemente define su forma.

Declaramos un módulo con el mismo nombre que el módulo npm en mi caso rdjs.

declare module 'rdjs'{

}

Luego definimos una interfaz con los métodos y su firma que queremos que utilice, en este caso he puesto los diferentes métodos que expone get, post, put y delete.

Realizamos un export del objecto rdjs es un objeto, nuestro módulo exportara una variable const implementando la interfaz que contiene nuestras especificaciones.

const rdjs: rdjs
export = rdjs

Ahora tenemos los métodos que utilizare en mi aplicación y puedo ver como visual studio code me autocompleta, me especifica la firma que necesita ese método y sus parámetros y el compilador me alerta de que no estoy enviado el tipo esperado.

Aqui todo el código completo o puedes verlo en Github

Ahora tenemos nuestro ideal puede autocompletar y ademas mostrarla firma de los métodos o visualmente alertarnos que no estamos pasando los parámetros especificados en la interfaz.

Ademas el compilador nos alerta de que no estoy enviado enviando los parámetros esperados.

scroller.ts(22,9): error TS2346: Supplied parameters do not match any signature of call target.

Happy Typings.