【发布时间】:2013-04-18 01:31:22
【问题描述】:
我在将其中一条 JavaScript 行转换为 TypeScript 时遇到了一点问题。
此行用于在 ID 为 containerId 的容器上创建类型为 widgetName 的小部件。 widgetName 是一个字符串:
$('#' + containerId)[widgetName](options)
示例: 在 id 为 example
的 div 上创建一个没有选项的手风琴小部件$('#example')["accordion"]();
// which could be rewritten as:
$('#example').accordion();
虽然 JavaScript 有效,但 TypeScript 在第一行抛出错误:
HTMLElement 类型的值不可调用
谁能帮助我如何写这个声明?我不能将HTMLElement 转换为JQueryStatic。提前致谢!
【问题讨论】:
-
如果
widgetName是一个整数,我可以看到这个错误;[widgetName]将在 jQuery 集合中的该位置检索HTMLElement,而(options)会抛出错误……但这不是有效的 JavaScript,更不用说 TypeScript。 -
@Matt
widgetName被键入为字符串,$(..)[string]的结果是HTMLElement,这导致了问题:) -
...那么这怎么可能?你不能执行
HTMLElement,如果你想创建一个,你必须使用document.createElement...? -
问题是 TypeScript 假设它是一个
HTMLElement。事实上,我打电话给$().accordion(options)。更新了我的问题以明确这一点。
标签: jquery typescript