Material-UI 依赖项:“'react-tap-event-plugin'”没有导出成员 'injectTapEventPlugin'

Material-UI dependencies: ''react-tap-event-plugin'' has no exported member 'injectTapEventPlugin'

我正在与 react/typescript/material-ui/webpack 合作。 Material-UI 依赖于 react-tap-event-plugin,我在导入 injectTapEventPlugin 函数时遇到问题,这是我得到的错误:

error TS2305: Module ''react-tap-event-plugin'' has no exported member 'injectTapEventPlugin'.

要添加 react-tap-event-plugin 的定义,我使用了以下命令:

sudo typings install dt~react-tap-event-plugin --save --global --save-dev

index.d.ts 看起来像这样:

declare module 'react-tap-event-plugin'{
    interface StrategyOverrides {
         shouldRejectClick?: (lastTouchEventTimestamp: Date, clickEventTimestamp: Date) => boolean;
    }

    var injectTapEventPlugin: (strategyOverrides?: StrategyOverrides) => void;

    export = injectTapEventPlugin;
}

我正在尝试使用以下方法在我的应用程序中导入插件:

import {injectTapEventPlugin} from 'react-tap-event-plugin';
injectTapEventPlugin();

知道我遗漏了什么吗?

取自github项目中的测试文件

// since the export is a function, this is the only actual correct way:
import injectTapEventPluginRequire = require("react-tap-event-plugin");

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/react-tap-event-plugin/react-tap-event-plugin-tests.ts

如果您的目标是 ES6 并且您正在尝试使用 解决此问题,您可能会得到以下打字稿 warning/error:

"Import assignment cannot be used when targeting ECMAScript 6 modules. Consider using import * as ns from "mod", import {a} from "mod", or another module format instead.

-@thomas-jespersen 已经对解决方案发表了评论。

错误消息给出了一些解决此问题的方法的建议,但我无法让其中的 none 起作用 - "out of the box" 按照建议。然而,我确实通过这样做让它工作了(这可能会更加完善):

... import * as injectTapEventPluginExport from 'react-tap-event-plugin'; const injectTapEventPlugin = (injectTapEventPluginExport as any).default; injectTapEventPlugin(); ...

它看起来不漂亮,但它确实有效。

我觉得 inject-tap-event-plugin 的不稳定或过时的打字稿定义是造成这种情况的真正原因。