没有重载匹配这个调用。在打字稿中反应

时间:2021-05-10 13:07:01

标签: reactjs typescript overloading

我在 React 中编写了以下组件,出现错误。 希望得到帮助。

主要组件:

export interface ICode {
code: (code: string) => void;

} 导出默认类 UserCode 扩展 React.Component{

state = {
    formFile: File,
    code: ""
}
//single
fileSelected(e: React.ChangeEvent<HTMLInputElement>) {
    var file = e.target.files;
    console.log(file);
    if (e.target.files)
        this.setState(
            { formFile: e.target.files[0] }
        )
}
aaa() {
    let value = (document.getElementsByClassName("user-code")[0] as HTMLInputElement).innerText;
    alert(value);
    console.log(value);
    return value;

}
updateCodeInFather() {
    this.props.code(this.state.code);
}
render() {
    return (
        <div>
            {/* <h6>Write your code here</h6> */}
            <Editor className="user-code"
                value={this.state.code}
                onChange={code => { this.setState({ code }); this.updateCodeInFather(); }}
                defaultLanguage="cpp"
                width={590}
                height={325}
                defaultValue={"void setup()\n{\n// put your setup code here, to run once:\n}\nvoid loop()\n{\n// put your main code here, to run repeatedly:\n}"}
            />
            <div>
                <input placeholder="browse" name="browse" id="browse" type="file" onChange={(e) => this.fileSelected(e)} accept=".txt, .ino" ></input>

            </div>

        </div>
    );
}

import Editor from './TagLanguage/Editor'
ReactDOM.render(
  <React.StrictMode>
    {
      <Editor></Editor>
    }
  </React.StrictMode>,
  document.getElementById('root')
);

出现错误: 没有重载匹配这个调用。 重载 1 of 2,'(props: Readonly): UserCode',出现以下错误。 类型“{}”中缺少属性“代码”,但类型“只读”需要。 重载 2 of 2, '(props: ICode, context?: any): UserCode',出现以下错误。 类型“{}”中缺少属性“代码”,但类型“只读”中需要。

1 个答案:

答案 0 :(得分:0)

需要更清楚地了解如何使用 ICode。 如果你想让 props 和 state 都有这个接口,可以考虑这样声明 Component:

export default class UserCode extends React.Component<ICode,ICode>

如果你只想要道具有这个界面:

 export default class UserCode extends React.Component<ICode,{}>