直接从TypeScript调用JavaScript

时间:2012-10-03 14:45:22

标签: typescript

我刚刚下载了TypeScript文档。我有一些JavaScript类,我想在TypeScript测试应用程序中创建和使用这些类

如何从TypeScript调用包含的JavaScript的JavaScript函数。我不想创建“d.ts”文件。只是为了创建我的类,调用它的方法,访问它的属性。

我该怎么做?


我正在尝试将kendoUI与TypeScript一起使用。

例如,要显示我必须要做的窗口:

  1. 使用HTML来表示窗口的内容。我有一个id为logonDialog的div。这个div 最初是隐藏的;
  2. 我创建窗口:logonDlg.kendoWindow(logOnParams);
  3. 然后使用jQuery我显示div:using logonDlg.show();
  4. 实施例

    var logonDlg = $("logonDialog");
    
    if (!logonDlg.data("kendoWindow")) {
       logonDlg.kendoWindow(logOnParams);
       logonDlg.show();
    }
    

    工作正常。 JS是按照我的意愿生成的,但是我收到一个错误,因为属性'kendoWindow'在'JQuery'类型的值上不存在。

    如何禁用此类错误。我不能说,瑞安说,工作。

4 个答案:

答案 0 :(得分:23)

如果你想在不做额外工作的情况下停止错误,你可以从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.

答案 1 :(得分:8)

有一个更好的解决方案。只需将jQuery logonDlg转换为如下所示:

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

代码会有所不同,但效果会相同。

  1. 如果没有强制转换生成的代码是这样的: logonDlg.kendoWindow(logOnParams);
  2. 演员阵容将如下:(logonDlg).kendoWindow(logOnParams);
  3. 两者都可以。

    此致

答案 2 :(得分:4)

你就是这样做的。 TypeScript不会阻止你。您将在编译器输出中看到警告,但tsc将生成您的JS文件。

答案 3 :(得分:4)

在这种特殊情况下,您可以只包含Telerik提供的Kendo UI TypeScript definitions

(我知道当TS定义可能尚不存在时会回答这个问题,但是想要为将来遇到这个问题的人添加这个细节。)

相关问题