मैंने एक वर्ग के रूप में कस्टम next.js App कंपोनेंट बनाया (Google एनेलिटिक्स को इनिशियलाइज़ करके componentDidMount फंक्शन को ओवरराइड करने के इरादे से)।

class MyApp extends App {
    async componentDidMount(): Promise<void> {
        await initializeAnalytics();
    }

    render() {
        const {Component, pageProps} = this.props;

        return (
            <Container>
                <Component {...pageProps} />
            </Container>
        );
    }
};

Tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "lib": ["es5", "es2015.promise", "dom"],
        "noImplicitAny": true,
        "noImplicitReturns": true,
        "strictNullChecks": true,
        "suppressImplicitAnyIndexErrors": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "jsx": "react",
        "baseUrl": ".",
        "skipLibCheck": true,
        "paths": {
            "@myapp/*": ["./node_modules"]
       }
   }
}

मैं जिस समस्या का सामना कर रहा हूं वह है error TS2339: Property 'props' does not exist on type MyApp.

props फ़ील्ड को App घटक से इनहेरिट किया जाना चाहिए जिसे इस प्रकार परिभाषित किया गया है:

export default class App<P = {}, CP = {}, S = {}> extends React.Component<P & AppProps<CP>, 
S> {
    static origGetInitialProps: typeof appGetInitialProps;
    static getInitialProps: typeof appGetInitialProps;
    componentDidCatch(error: Error, _errorInfo: ErrorInfo): void;
    render(): JSX.Element;
}

कंपाइलर MyApp घटक पर props फ़ील्ड गुम होने की शिकायत क्यों करता है? क्या इसे App घटक से इनहेरिट नहीं किया जाना चाहिए जो React.Component का विस्तार करता है?

प्रयुक्त संस्करण:

  • टाइपस्क्रिप्ट 4
  • अगला.जेएस 10.0.0
  • प्रतिक्रिया 17.0.0
  • @ प्रकार/प्रतिक्रिया 17.0.0
2
vlcik 22 पद 2020, 02:01

2 जवाब

सबसे बढ़िया उत्तर

आपको अपनी tsconfig.json फ़ाइल में "esModuleInterop": true को compilerOptions के अंतर्गत जोड़ना होगा।

मेरा सुझाव है कि आप अन्य प्रतिक्रिया-संबंधी समस्याओं से बचने के लिए "jsx": "preserve" का उपयोग करें।

1
juliomalves 3 जिंदा 2021, 22:13

आपके लिए this.props का उपयोग करने के लिए, प्रॉप्स myApp वर्ग में एक विधि होनी चाहिए। इसलिए this.props संकलक द्वारा संकेत के रूप में मौजूद नहीं है

-1
Rahul Sharma 22 पद 2020, 09:08