javascript - "Objekt er muligens 'undefined'" i reactjs med typescript
Jeg har lett en stund, og funnet lignende problemer på nettet, men ingen av løsningene ser ut til å fungere for meg.
Jeg bruker TypeScript i React-prosjektet mitt for aller første gang, og jeg får en feil:
Object is possibly 'undefined'Jeg har prøvd å finne ut hvordan jeg kan fikse dette, men har ikke funnet noen løsninger så langt.
Her er koden min (inne i en funksjonell komponent i ReactJS):
return(
...
{questions[currentStep].type === 'select' &&
questions[currentStep].options && (
<>
<select id="question" onChange={submitForm} autoFocus required>
<option value="" />
{questions[currentStep].options.map(question => {
<option>{question}</option>;
})}
</select>
<label htmlFor="question">{questions[currentStep].text}}</label>
</>
)}
...
)
Og dette er grensesnittet, hvor jeg har erklært questions-attributtet som valgfritt:
interface Question {
...
options?: string[];
...
}
Hvordan kan jeg muligens fikse dette problemet?
Svar #1
Grunnen til at TypeScript klager er fordi det har problemer med å oppdage at du allerede har gjort en null-sjekk tidligere. En måte å fortelle TS at du er sikker på at egenskapen vil eksistere, er å bruke operatoren for ikke-null påstand (!):
return(
...
{questions[currentStep].type === 'select' &&
questions[currentStep].options && (
<>
<select id="question" onChange={submitForm} autoFocus required>
<option value="" />
{questions[currentStep].options!.map(question => {
<option>{question}</option>;
})}
</select>
<label htmlFor="question">{questions[currentStep].text}}</label>
</>
)}
...
)
eller du kan også gjøre som andre foreslo og replikere null-sjekken:
{questions[currentStep].options && questions[currentStep].options!.map(question => {
<option>{question}</option>;
})}
