2012-10-03 92 views
17

Acabo de descargar la documentación de TypeScript. Tengo algunas clases de JavaScript y me gustaría crear y utilizar estas clases en una aplicación de prueba de TypeScriptLlamar a JavaScript directamente desde TypeScript

¿Cómo puedo llamar a una función de JavaScript de un JavaScript incluido de TypeScript. No quiero crear un archivo "d.ts". Solo para crear mis clases, llamar a sus métodos, acceder a sus propiedades.

Cómo lo hago?


Estoy tratando de usar kendoUI con TypeScript.

Por ejemplo para mostrar una ventana que tengo que hacer:

  1. Tener un HTML para representar el contenido de una ventana. Tengo un div con un id logonDialog. Este div
    está inicialmente oculto;
  2. Creo la ventana: logonDlg.kendoWindow (logOnParams);
  3. Luego, utilizando jQuery que muestran la div: usando logonDlg.show();

Ejemplo

var logonDlg = $("logonDialog"); 

if (!logonDlg.data("kendoWindow")) { 
    logonDlg.kendoWindow(logOnParams); 
    logonDlg.show(); 
} 

donde está funcionando correctamente. El JS se genera como quiero pero recibo un error ya que la propiedad 'kendoWindow' no existe en el valor de tipo 'JQuery'.

Cómo puedo desactivar este tipo de error. No podía hacer, lo que dijo Ryan, para trabajar.

Respuesta

5

Lo haces. TypeScript no lo detendrá. Verá advertencias en la salida del compilador, pero tsc generará su archivo JS sin problemas.

+0

Gracias a todos tú. Lo probaré pronto. – mvbaffa

+4

este no es el caso en vs2013? El edificio se detiene y no puedo ejecutar mi proyecto. – daniel

22

Si desea detener los errores sin hacer mucho más trabajo extra, puede 'declare' los objetos de su código JS:

declare var w; // implicit type here is 'any' 
// (later, anywhere in your file...) 
var x = new w(); // you can do whatever you want with w now without getting errors 
w.x = 4; // etc. 
8

hay una solución mejor. Sólo emitir el jQuery logonDlg a cualquier así:

(<any>logonDlg).kendoWindow(logOnParams); 

El código será un poco diferente, pero funcionará de la misma.

  1. Sin el reparto ésimo código generado es de esta manera: logonDlg.kendoWindow (logOnParams);
  2. Con el molde será así: (logonDlg) .kendoWindow (logOnParams);

Ambos funcionan bien.

Saludos

4

en este caso particular que sólo podrían incluir la Kendo UI TypeScript definitions que ofrece Telerik.

(Me di cuenta que pregunta se hizo atrás cuando probablemente no existían las definiciones TS todavía, pero quería añadir este detalle para las personas que vienen a través de esta cuestión en el futuro.)

Cuestiones relacionadas