3

我在将我的 JavaScript 行之一转换为 TypeScript 时遇到了一点问题。

此行用于widgetName在具有 id 的容器上创建类型的小部件containerIdwidgetName是一个字符串:

$('#' + containerId)[widgetName](options)

示例:在具有 id示例的 div 上创建不带选项的手风琴小部件

$('#example')["accordion"]();
// which could be rewritten as:
$('#example').accordion();

尽管 JavaScript 有效,但 TypeScript 在第一行抛出错误:

HTMLElement 类型的值不可调用

谁能帮我写这个声明?我不能HTMLElement转换为 ie JQueryStatic。提前致谢!

4

2 回答 2

3

您是否使用绝对键入的最新版本的 jquery 定义文件(https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts)?

看起来这在您的情况下应该可以正常工作(第 726/727 行)-

[x: string]: any;
[x: number]: HTMLElement;

旧版本的 d.ts 定义不正确:

[x: string]: HTMLElement; // *WRONG*
[x: number]: HTMLElement;

(更新:经过测试,我发现我有同样的错误。更新到上面列出的 d.ts 修复它)。

于 2013-04-24T13:59:30.323 回答
1

最简单的解决方案:

(<any>$('#example'))["accordion"]();
于 2013-04-24T13:36:13.470 回答