我正在使用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();
关于我遗失的任何想法?
答案 0 :(得分:4)
取自github项目中的测试文件
// since the export is a function, this is the only actual correct way:
import injectTapEventPluginRequire = require("react-tap-event-plugin");
答案 1 :(得分:4)
如果您的目标是ES6并且您尝试使用accepted solution解决此问题,则可能会收到以下打字稿警告/错误:
"定位ECMAScript 6模块时无法使用导入分配。请考虑使用
import * as ns from "mod"
,import {a} from "mod"
或其他模块格式。
- 已经@ thomas-jespersen评论了该解决方案。
错误消息提供了一些解决方法的建议,但我无法让它们起作用 - "开箱即用"如建议。然而,我确实通过这样做(它可能更精确)得到它的工作:
...
import * as injectTapEventPluginExport from 'react-tap-event-plugin';
const injectTapEventPlugin = (injectTapEventPluginExport as any).default;
injectTapEventPlugin();
...
它看起来不漂亮,但似乎确实有效。
我觉得inject-tap-event-plugin
的不稳定或过时的打字稿定义是这个问题的真正原因。