将我的一条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
。提前谢谢!
答案 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"]();