将onTouchTap添加到div时,Typescript中的语法错误

时间:2016-01-27 20:37:32

标签: typescript react-jsx

使用Typescript,在.tsx文件中,

之后
import injectTapEventPlugin = require('react-tap-event-plugin')
injectTapEventPlugin()

使用这个JSX:

<div onTouchTap={ this.showFront }>

我收到语法错误:

error TS2339: Property 'onTouchTap' does not exist on type 'HTMLProps<HTMLDivElement>'.

尽管有

interface HTMLDivElement {

    onTouchTap: Function,

}

在同一个代码文件中,它应该将onTouchTap合并到lib.d.ts中div使用的HTMLDivElement接口

intellisense看到onTouchStart等,但不是onTouchTap

有什么不对,或者我做错了什么?

谢谢,

  • 的Henrik

1 个答案:

答案 0 :(得分:2)

  

在同一个代码文件中,它应该将onTouchTap合并到lib.d.ts中div使用的HTMLDivElement接口

没有。因为您的文件是模块,因为您具有根级importimport injectTapEventPlugin)。这意味着它与全局命名空间断开连接

您要扩展的接口也不是HTMLDivElement,而是react.d.ts中定义的DOM属性。

FIX

您需要创建一个vendor.d.ts并将其放入:

declare module __React{
    interface DOMAttributes {
        onTouchTap?: Function,
    }
}

更多:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html