मेरे पास यह प्रतिक्रिया/टाइपप्रति पृष्ठ है:

प्लेयर्सपेज.tsx

import React, { useState, useEffect } from 'react';
import { Page } from './Page';
import { PageTitle } from './PageTitle';
import { Button, Card } from 'react-bootstrap';

function PlayersPage() {
  const [isLoading, setIsLoading] = useState(false);
  const [playersData, setPlayersData] = useState([]);

  //Fetch all players from database
  useEffect(() => {
    //setIsLoading(true);
    fetch('http://localhost:44326/api/Players')
      .then((response) => {
        if (response.ok) {
          return response.json();
        }
      })
      .then((data) => setPlayersData(data));
    //.then(setIsLoading(false));
  }, []);

  return (
    <Page>
      <div style={{ padding: 20 }}>
        <PageTitle>Toons</PageTitle>
      </div>

      <div>
        {playersData.map((data) => (
          <div key={data.ID}>
            <Card>
              <Card.Title>{data.ID}</Card.Title>
              <Card.Text>{data.Handle}</Card.Text>
              <Card.Body>
                <div className="lables">
                  <Card.Text>Role</Card.Text>
                </div>
                <div className="lables">
                  <Card.Text>{data.Role}</Card.Text>
                </div>
                <Button variant="primary">Work</Button>
              </Card.Body>
            </Card>
            <br></br>
          </div>
        ))}
      </div>
    </Page>
  );
}

export default PlayersPage;

मुझे यह त्रुटि मिल रही है: Property 'ID' does not exist on type 'never'.ts(2339) प्रत्येक पंक्ति पर जिसमें data.ID या data.whatever है।

उन मूल्यों का कभी भी उपयोग क्यों नहीं किया जाएगा या हमेशा शून्य क्यों होंगे? मैं कुछ अन्य ऐप्स में लगभग समान कोड का उपयोग करता हूं इसलिए मुझे यकीन नहीं है कि इस स्थिति के बारे में क्या अलग है। अग्रिम में धन्यवाद।

1
GrillOwner69420 20 अगस्त 2021, 05:16
नीचे दिया गया उत्तर सही है, लेकिन मुझे कुछ संदर्भ जोड़ने दें: जब भी आप useState([]) को इनिशियलाइज़ करते हैं तो यह स्वचालित रूप से डेटा प्रकार को never[] मान लेगा। never टाइपस्क्रिप्ट में एक विशेष डेटाटाइप है, जो कुछ भी अनुमति नहीं देता है, आप इसे टाइपस्क्रिप्ट डॉक्स में देख सकते हैं।
 – 
Samridh Tuladhar
20 अगस्त 2021, 05:57
क्या यह सिर्फ एक टाइपस्क्रिप्ट चीज है? मैंने पहले कभी किसी प्रतिक्रिया परियोजना में टाइपस्क्रिप्ट का उपयोग नहीं किया है और पहले कभी भी टाइप नहीं जोड़ना पड़ा है। हालांकि यह समझ में आता है।
 – 
GrillOwner69420
20 अगस्त 2021, 17:19
हां, यह एक टाइपस्क्रिप्ट चीज है और शायद अन्य ढांचे और परिस्थितियों में भी इसका उपयोग किया जाता है, never सामान्य रूप से यह सुनिश्चित करने के लिए होता है कि फ़ंक्शन से कुछ भी वापस नहीं किया जाता है।
 – 
Samridh Tuladhar
20 अगस्त 2021, 18:32

1 उत्तर

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

जब आप इसे डिकैल करते हैं तो आपको playersData के लिए टाइप जोड़ना होगा।

interface DataType {
  ID: string;
  Handle: string;
  Role: string;
}

const [playersData, setPlayersData] = useState<Array<DataType>>([]);
3
Viet 20 अगस्त 2021, 05:40
क्या यह सिर्फ एक टाइपस्क्रिप्ट चीज है? मैंने पहले कभी किसी प्रतिक्रिया परियोजना में टाइपस्क्रिप्ट का उपयोग नहीं किया है और पहले कभी भी टाइप नहीं जोड़ना पड़ा है। हालांकि यह समझ में आता है।
 – 
GrillOwner69420
20 अगस्त 2021, 17:19
इसके अलावा, isLoding के लिए क्या है? अगर मैं इसे इस तरह सेट करता हूं: ```` const [isLoading, setIsLoading] = useState(false); ```` तो मैं बाद में इसे सही पर सेट कर सकता हूं ठीक है ```` setIsLoading(true); ```` लेकिन जब मैं इसे फिर से गलत पर सेट करने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है: ```` प्रकार का तर्क 'शून्य' प्रकार के पैरामीटर के लिए असाइन करने योग्य नहीं है '((मान: शून्य) => शून्य | PromiseLike) | शून्य | अपरिभाषित'.ts(2345) ````
 – 
GrillOwner69420
20 अगस्त 2021, 18:14