私は、Reactフレームワークを使用するJavaScriptレガシープロジェクトを使用しています。まったく異なるTypeScript Reactプロジェクトで再利用したいReactコンポーネントがいくつか定義されています。
JS Reactコンポーネントは、controls.jsxファイルで定義され、次のようになります。
export class MyComponent extends React.Component {
render() {
return <h1>Hi from MyComponent! Message provided: {this.props.message}</h1>;
}
}
私のTypeScript Reactプロジェクトでは、次のように使用しようとしています。
import * as React from "react";
import * as ReactDOM from "react-dom";
import { MyComponent } from "../JavaScriptProject/controls";
ReactDOM.render(
<MyComponent message="some nice message"/>,
document.getElementById("documents-tree")
);
エラーメッセージは言う:
JSX要素タイプ 'MyComponent'は、JSX要素のコンストラクタ関数ではありません。タイプ 'MyComponent'にタイプ 'ElementClass'の次のプロパティがありません:context、setState、forceUpdate、props、および2 more.ts(2605)JSX要素クラスは 'props'プロパティがないため、属性をサポートしていません。 (2607)
この質問で説明されているカスタムタイピングファイルを使用してソリューションをすでに試しましたが、何も変わりません。
JSコンポーネントにはTypeScriptに必要な強く型付けされたプロパティがいくつか不足していることを理解していますが、私のtsconfig.jsonではallowJsをtrueに設定しています:
{
"compilerOptions": {
"allowJs": true,
"baseUrl": ".",
"experimentalDecorators": true,
"jsx": "react",
"noEmitOnError": true,
"outDir": "lib",
"sourceMap": true,
"target": "es5",
"lib": [
"es2015",
"dom"
]
},
"exclude": [
"node_modules",
"dist",
"lib",
"lib-amd"
]
}
それがうまくいくことを望みました...
ご協力いただきありがとうございます