在TypeScript

时间:2015-12-03 09:04:01

标签: typescript

我尝试使用以下方法从TS1.6中的剪贴板访问数据:

$(container).bind("paste", (e) => {
    var data = e.originalEvent.clipboardData.getData('text');
});

但它只是给我以下构建错误:

  

属性' clipboardData'在类型' JQueryEventObject'

上不存在

如果我删除第二行并在Chrome 46中调试它,我只需拨打

即可获取剪贴板数据
e.originalEvent.clipboardData.getData('text');

我无法在最新版本的jQuery.d.ts中的JQueryEventObject接口中看到clipboardData,但问题是 - 它应该存在还是有一种不同的方式从TS当前支持的剪贴板中检索数据?

4 个答案:

答案 0 :(得分:5)

似乎直到TS1.8,我发现一个(hacky)选项只是用这个扩展Event

interface Event {
    clipboardData: any;
}

我确信我可以通过更好地替换any来改善这一点,但现在可以使用。

答案 1 :(得分:5)

您可以使用[“property”]方法

绕过预期的打字稿类型
 var pastedData = e.originalEvent["clipboardData"].getData('text');

答案 2 :(得分:1)

Event投射到ClipboardEvent,如下所示:

element.bind('paste', (event: Event) => {
    let clipboardEvent: ClipboardEvent = <ClipboardEvent> event;
});

答案 3 :(得分:1)

使用ClipboardEvent类型(例如)

private onPaste(event: ClipboardEvent) {
    const {clipboardData} = event;
    const pastedText = clipboardData.getData('text');
}