का उपयोग कर प्रतिक्रिया उच्च उच्च घटक घटक के लिए एनोटेशन टाइप करें मैं टाइपस्क्रिप्ट का उपयोग कर अपने रिएक्ट प्रोजेक्ट के लिए एक उच्च ऑर्डर घटक लिख रहा हूं जो मूल रूप से एक फ़ंक्शन एक प्रतिक्रिया घटक को एक तर्क के रूप में स्वीकार करता है और इसके आसपास लपेटता हुआ एक नया घटक लौटाता है।टाइपस्क्रिप्ट
अभी तक के रूप में यह काम करता है के रूप में उम्मीद, टीएस प्रश्न में "निर्यात समारोह की वापसी प्रकार है या निजी नाम इस्तेमाल कर रहा है" कि शिकायत कर रहा है बेनामी वर्ग "
फंक्शन:।
export default function wrapperFunc <Props, State> (
WrappedComponent: typeof React.Component,
) {
return class extends React.Component<Props & State, {}> {
public render() {
return <WrappedComponent {...this.props} {...this.state} />;
}
};
}
त्रुटि उचित है क्योंकि रैपर फ़ंक्शन के रिटर्निंग क्लास को निर्यात नहीं किया जाता है और अन्य मॉड्यूल आयात इस फ़ंक्शन को यह जानने का कोई तरीका नहीं है कि रिटर्न वैल्यू क्या होगा। लेकिन मैं इस फ़ंक्शन के बाहर रिटर्न क्लास घोषित नहीं कर सकता क्योंकि इसे एक घटक पास लपेटना आवश्यक है बाहरी समारोह में
स्पष्ट रूप से वापसी प्रकार typeof React.Component
निर्दिष्ट करने के साथ एक परीक्षण इस त्रुटि को दबाने के लिए करें।
फंक्शन:
export default function wrapperFunc <Props, State> (
WrappedComponent: typeof React.Component,
): typeof React.Component { // <== Added this
return class extends React.Component<Props & State, {}> {
public render() {
return <WrappedComponent {...this.props} {...this.state} />;
}
};
}
हालांकि, मैं इस दृष्टिकोण की वैधता के बारे में कुछ नहीं कर रहा हूँ। क्या इसे टाइपस्क्रिप्ट में इस विशेष त्रुटि से निपटने के लिए सही दृष्टिकोण माना जाता है? (या क्या मैं कहीं और अनपेक्षित साइड इफेक्ट्स बना रहा हूं? या ऐसा करने का कोई बेहतर तरीका?)
(संपादित करें) डैनियल के सुझाव के अनुसार उद्धृत कोड बदलें।
विस्तृत उत्तर के लिए धन्यवाद डैनियल। मैंने कोड साफ़ किया लेकिन अनावश्यक हिस्से को साफ करने में असफल रहा। हां CompState इस प्रश्न के लिए अप्रासंगिक है। और मेरा अनुमान सही है (वास्तव में प्रश्न से परे सोचने की सराहना करते हैं)। मैंने कॉम्पस्टेट भाग को छोड़ने के लिए प्रश्न को संशोधित किया क्योंकि यह भविष्य में दूसरों को भ्रमित कर सकता है। – shuntksh