मैं Microsoft TypeScript-React-Starter का उपयोग कर रहा है और इस संकलन त्रुटि मिली हैं:जेएसएक्स तत्व प्रकार 'ऐप' जेएसएक्स तत्वों के लिए एक कन्स्ट्रक्टर फ़ंक्शन नहीं है। संपत्ति 'setState' के प्रकार <code>npm start</code> दौरान असंगत
./src/index.tsx
(16,5): error TS2605: JSX element type 'App' is not a constructor function for JSX elements.
Types of property 'setState' are incompatible.
Type '{ <K extends never>(f: (prevState: null, props: {}) => Pick<null, K>, callback?: (() => any) | un...' is not assignable to type '{ <K extends never>(f: (prevState: {}, props: any) => Pick<{}, K>, callback?: (() => any) | undef...'.
Types of parameters 'f' and 'f' are incompatible.
Type '(prevState: {}, props: any) => Pick<{}, any>' is not assignable to type '(prevState: null, props: {}) => Pick<null, any>'.
Types of parameters 'prevState' and 'prevState' are incompatible.
Type 'null' is not assignable to type '{}'.
तो ऐसा लगता है मेरी setState
समारोह में गलत हस्ताक्षर है, लेकिन मुझे यकीन है कि यह कैसे तय करने के लिए नहीं कर रहा हूँ की तरह ।
class App extends React.Component<{}, null> {
render() {
return (
<div className="App">
...
</div>
);
}
}
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root') as HTMLElement
);
मैं उपयोग कर रहा हूँ: यहाँ मेरी कोड है
node v6.11.0
npm v5.1.0
typescript v2.4.1
react v15.6.1
redux v3.7.1
react-redux v5.0.5
react-scripts-ts v2.3.2
अद्यतन:
मुझे पता चला है कि जेनेरिक प्रकार <{}, null>
को हटाने त्रुटि को साफ करता है। लेकिन मुझे अभी भी यह जानना अच्छा लगेगा कि मुझे त्रुटि क्यों मिल रही थी।
यदि ऐप घटक राज्य का उपयोग नहीं करता है, तो आप वास्तव में इसे एक कार्यात्मक स्टेटलेस घटक बना सकते हैं। –
@ डी-रीपर 'ऐप' मेरे मामले में राज्य का उपयोग करता है। मैं राज्य का प्रबंधन करने के लिए 'redux' का उपयोग कर रहा हूँ। मुझे लगता है कि मुझे स्पष्ट रूप से 'prevState()' लिखना नहीं है? – CherryQu
मुझे लगता है कि आप React.Component में दूसरे प्रकार के तर्क के रूप में 'शून्य' को पार कर रहे हैं, जो राज्य की संरचना को परिभाषित करता है और यह केवल कुछ प्रकारों (उदा। ऑब्जेक्ट) के साथ संगत है जिससे टीएस को उस त्रुटि को फेंकने का कारण बनता है। '' या बस '<{}> 'भी काम करेगा। –