javascript - Usar import/require en TypeScript para obtener declaraciones de interfaces
Si hago referencia a un archivo de declaraciones de TypeScript (por ejemplo, jquery.d.ts) usando la sintaxis /// <reference path="..."/>, depende de mí asegurarme de cargar la biblioteca correspondiente por algún otro medio, es decir, solo referenciar el archivo .d.ts no carga la biblioteca.
¿Hay alguna manera de hacer que TypeScript genere una llamada require() para la biblioteca cuando la uso? Si no estuviera usando AMD/requirejs, podría simplemente llamar a require manualmente, pero me gustaría hacer que esto funcione con AMD.
La ventaja de esto es que mis dependencias no estarían definidas en dos lugares. Referenciar la biblioteca desde un archivo .ts sería suficiente para asegurar que se cargue, en lugar de tener que mantener manualmente la lista de dependencias en mi HTML.
Actualización: Abrí una nueva pregunta que aclara mi situación exacta. Quiero dar crédito por la respuesta a mi pregunta original ya que no di todos los detalles necesarios.
Respuesta #1
Sí, TypeScript admite módulos "externos", que son básicamente módulos AMD o CommonJS de primera clase. Por ejemplo:
MiBiblioteca.ts
export function foo() { return 'bar' }
MiProj.ts
import lib = module('./MyLib.ts')
lib.foo(); // returns bar
Compila esto con "--module amd" y obtendrás la sintaxis correcta de módulo y require generada para ti.
Respuesta #2
Escribí algo sobre eso en mi blog. También puedes encontrar un ejemplo en GitHub.
La solución es bastante larga de explicar, pero básicamente uso shims con Require.JS para definir un nombre de módulo que represente la biblioteca de Javascript que quiero cargar. Luego creo un archivo TypeScript con el mismo nombre para que el compilador de TypeScript genere código Javascript que pueda usar la biblioteca JS que quiero. Realmente no tiene mucho sentido así, pero por favor lee el post y creo que tendrá más sentido.
