直接从 TypeScript 调用 JavaScript
Posted
技术标签:
【中文标题】直接从 TypeScript 调用 JavaScript【英文标题】:Calling JavaScript directly from TypeScript 【发布时间】:2012-09-24 12:38:34 【问题描述】:我刚刚下载了 TypeScript 文档。我有一些 javascript 类,我想在 TypeScript 测试应用程序中创建和使用这些类
如何从 TypeScript 调用包含的 JavaScript 的 JavaScript 函数。我不想创建“d.ts”文件。只是为了创建我的类,调用它的方法,访问它的属性。
我该怎么做?
我正在尝试将 kendoUI 与 TypeScript 一起使用。
例如显示一个我必须做的窗口:
-
有一个 html 来表示窗口的内容。我有一个 id 为 logonDialog 的 div。这个 div
最初是隐藏的;
我创建窗口:logonDlg.kendoWindow(logOnParams);
然后使用 jQuery 我显示 div:使用
logonDlg.show();
例子
var logonDlg = $("logonDialog");
if (!logonDlg.data("kendoWindow"))
logonDlg.kendoWindow(logOnParams);
logonDlg.show();
一切正常。 JS 是按我的意愿生成的,但我收到一个错误,因为“JQuery”类型的值上不存在“kendoWindow”属性。
如何禁用此类错误。正如 Ryan 所说,我无法工作。
【问题讨论】:
【参考方案1】:在这种特殊情况下,您可以只包含 Telerik 提供的 Kendo UI TypeScript definitions。
(我意识到这个问题是在 TS 定义可能还不存在时被问到的,但我想为将来遇到这个问题的人添加这个细节。)
【讨论】:
【参考方案2】:有一个更好的解决方案。只需将 jQuery logonDlg 转换为任何这样的:
(<any>logonDlg).kendoWindow(logOnParams);
代码会有些不同,但工作原理是一样的。
-
没有强制转换生成的代码是这样的:logonDlg.kendoWindow(logOnParams);
加上演员表会是这样的:(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不是这样吗?建设停止,我无法运行我的项目。以上是关于直接从 TypeScript 调用 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React/TypeScript 应用程序中的模块方法上获取 VSCode 智能感知?