javascript - Typfel: Objektet kan vara 'null'. TS2531 för window.document
Jag lägger till TypeScript i mitt projekt för första gången.
Att använda window.document.getElementById() för att få åtkomst till något resulterar i felet:
Type error: Object is possibly 'null'. TS2531
Jag sökte online men kunde inte hitta den bästa lösningen för detta. window kan aldrig vara null.
Svar #1
TS gör sitt jobb och berättar för dig att window.document.getElementById("foobar") KAN returnera något som är null.
Om du är helt säker på att #foobar-elementet FINNS i ditt DOM, kan du visa TS ditt självförtroende med en !-operator.
// Notice the "!" at the end of line
const myAbsolutelyNotNullElement = window.document.getElementById("foobar")!
Eller, du kan lägga till en körningstid nullable-kontroll för att göra TS nöjd
const myMaybeNullElement = window.document.getElementById("foobar")
myMaybeNullElement.nodeName // <- error!
if (myMaybeNullElement === null) {
alert('oops');
} else {
// since you've done the nullable check
// TS won't complain from this point on
myMaybeNullElement.nodeName // <- no error
}
Svar #2
window.document.getElementById("foobar");Returnerar antingen ett HTMLElement eller null
Som du kanske har använt ett liknande uttalande tidigare: window.document.getElementById("foobar").value
Typescript klagar på att värdet kanske inte är tillgängligt och du bör uttryckligen kontrollera detta innan.
För att undvika detta kan du göra följande:
const element = window.document.getElementById("foobar");
if (element !== null) {
alert(element.value);
}
