'事件'类型中不存在属性'params'

时间:2017-03-06 06:50:02

标签: jquery events typescript select2

我正在尝试使用select2TypeScript (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的屏幕截图:

enter image description here

2 个答案:

答案 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