【问题标题】:Calling JavaScript directly from TypeScript直接从 TypeScript 调用 JavaScript
【发布时间】:2012-09-24 12:38:34
【问题描述】:

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

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

我该怎么做?


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

例如显示一个我必须做的窗口:

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

例子

var logonDlg = $("logonDialog");

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

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

如何禁用此类错误。正如 Ryan 所说,我无法工作。

【问题讨论】:

    标签: typescript


    【解决方案1】:

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

    (我意识到这个问题是在 TS 定义可能还不存在时被问到的,但我想为将来遇到这个问题的人添加这个细节。)

    【讨论】:

      【解决方案2】:

      有一个更好的解决方案。只需将 jQuery logonDlg 转换为任何这样的:

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

      代码会有些不同,但工作原理是一样的。

      1. 没有强制转换生成的代码是这样的:logonDlg.kendoWindow(logOnParams);
      2. 加上演员表会是这样的:(logonDlg).kendoWindow(logOnParams);

      两者都可以正常工作。

      问候

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 感谢大家。我会尽快尝试。
          • vs2013不是这样吗?建设停止,我无法运行我的项目。
          猜你喜欢
          • 2015-11-07
          • 1970-01-01
          • 1970-01-01
          • 2014-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多