我正在尝试使用select2
和TypeScript (2.1)
从点击事件中获取所选值。我按照示例here:
但是,在TypeScript
中,我总是收到以下错误:
符号'params'无法正确解析,可能位于无法访问的模块
尝试访问evt.params
时。
我的功能:
// bind to the select-event
$theElement.on("select2:select", (evt: Event) => {
if (!evt) {
var args = "{}";
} else {
var args = JSON.stringify(evt.params, function (key, value) { // <-- here is the error
if (value && value.nodeName) return "[DOM node]";
if (value instanceof $.Event) return "[$.Event]";
return value;
});
}
});
我检查了位于Event
的{{1}}来源a.k.a. lib.d.ts,确实没有定义C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.1
。
那么,如何在不将类型更改为params
的情况下访问该属性?
以下是Chrome any
的屏幕截图:
答案 0 :(得分:0)
内置Event
类型引用standard DOM event,而您的函数参数看起来可能是由select2库自定义的jQuery事件。假设params
确实是特定于select2库的属性(我在文档中没有看到),您需要reference a type definition特定于select2 TypeScript文件。
如果找不到具有params
属性的类型定义,则可以通过创建一个从jQuery的类型定义JQueryEventObject
扩展的接口来创建自己的属性。 {1}}来自select2&#39; s。
答案 1 :(得分:0)
这不是最优雅的解决方案,但您可以使用event['params']
访问此媒体资源。
我不确定投射你的建议是否建议,但只是为了这一次调用而做,但并不是更好:(event as any).params
。