typescript typescript1.4

typescript - ¿Cuál es la diferencia entre*.d.ts vs*.ts en mecanografiado?



typescript1.4 (2)

Todo lo permitido en un archivo * .d.ts también puede aparecer en un archivo * .ts, pero no al revés. Entonces * .d.ts permite un subconjunto de características de TypeScript.

Un archivo * .d.ts solo puede contener código de TypeScript que no genere ningún código JavaScript en la salida. Si intenta utilizar cualquier característica de TypeScript que genere JavaScript, obtendrá un error.

Las interfaces están permitidas, porque desaparecen por completo después de la compilación.

Las enumeraciones de Const (agregadas en 1.4) también están permitidas, a diferencia de las enumeraciones ordinarias que generan un objeto en el JavaScript de salida.

Las clases de nivel superior, las variables, los módulos y las funciones deben ir precedidas de declare . A menudo verá un declare module nivel superior y las cosas que contiene son, por lo tanto, una declaración pura:

declare module Something { var x; }

Son útiles para algo más que simplemente exponer una interfaz de TypeScript a un código escrito en JavaScript. También puede usarlos para declarar un conjunto de interfaces comunes que se usan ampliamente en su código, por lo que no es necesario require un módulo físico específico solo para obtener visibilidad de esas interfaces.

Comienzo a jugar con TypeScript que encontré realmente increíble. Pero estoy confundido acerca de la diferencia entre *.d.ts y *.ts . ¿Cual es la diferencia entre ellos? ¿Alguien puede explicarme con el ejemplo apropiado?


Archivo de definición de TypeScript ( *.d.ts )

Estos archivos se usan para describir la "forma" de un archivo JavaScript para usar en TypeScript.

Por ejemplo, supongamos que tengo el siguiente JavaScript (Example.js):

function displayMessage(message) { alert(message); }

Con este archivo solo, mi código TypeScript no tendrá ninguna pista de que esta función existe. No sabrá su nombre y no conocerá sus parámetros. Podemos solucionar esto describiéndolo en un archivo de definición como tal (Ejemplo.d.ts):

declare function displayMessage(message: string);

Ahora puedo usar la función displayMessage en TypeScript sin errores de compilación y obtengo errores de compilación cuando lo uso incorrectamente (por ejemplo, si proporciono 2 argumentos en lugar de 1 , obtendría un error).

En resumen: los archivos de definición le permiten usar código JavaScript existente en TypeScript sin tener que reescribir el código en TypeScript.

Archivo de TypeScript ( .ts )

Esta es la extensión de archivo estándar que usa cuando escribe TypeScript. Será compilado a JavaScript.