HTMLElement类型的值不可调用

时间:2013-04-24 13:14:05

标签: jquery typescript

将我的一条JavaScript行转换为TypeScript时遇到了一些问题。

此行用于在标识为widgetName的容器上创建类型为containerId的小部件。 widgetName是一个字符串:

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

实施例: 在id为 example

的div上创建一个没有选项的手风琴小部件
$('#example')["accordion"]();
// which could be rewritten as:
$('#example').accordion();

虽然是有效的JavaScript,但TypeScript会在第一行引发错误:

  

HTMLElement类型的值不可调用

任何人都可以帮我写下这句话吗?我无法将HTMLElement投射到JQueryStatic。提前谢谢!

2 个答案:

答案 0 :(得分:2)

您是使用肯定类型(https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts)的最新版本的jquery定义文件吗?

看起来这应该可以正常使用(第726/727行) -

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

旧版本的d.ts定义错误:

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

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

答案 1 :(得分:1)

最简单的解决方案:

(<any>$('#example'))["accordion"]();