我目前正在使用React 16.4.1和Typescript 2.9.2。我正在尝试利用reaptcha库:
https://github.com/sarneeh/reaptcha
我这样导入的:
import * as Reaptcha from 'reaptcha';
由于没有提供类型定义,因此构建当前会给我这个(预期的)错误:
TS7016: Could not find a declaration file for module 'reaptcha'. '...' implicitly has an 'any' type.
尽管出现此错误,代码“仍然有效”,但是我已经尝试了很长时间来构建足以定义该错误的定义文件。根据库的导出方式,似乎有很多不同的方法可以完成此操作,但我似乎并没有找到合适的组合。对于此定义:
declare module "reaptcha" {
import * as React from "react";
export default class Reaptcha extends React.Component<any, any> {
}
}
这并没有解决问题,而是提出了另一个错误。
TS2604: JSX element type 'Reaptcha' does not have any construct or call signatures.
这后一个错误,我很坚持。超过此限制的任何帮助。
使用该组件的最小情况是:
public render() {
const Fragment = React.Fragment;
return (
<Fragment>
<Reaptcha
ref={(e: any) => (this.captcha = e)}
sitekey="MY KEY"
onVerify={this.onVerify}
/>
</Fragment>
);
}
答案 0 :(得分:1)
您可以使用:
declare module "reaptcha";
答案 1 :(得分:1)
Reaptcha readme将导入显示为:
import Reaptcha from 'reaptcha';
我用您的原始声明尝试了这种导入样式,TypeScript很高兴,但是导入在运行时无法正常工作。当我启用--esModuleInterop
TypeScript选项时,一切正常。如果尚未尝试使用此选项。