π¨ Object is possibly βnullβ.ts(2531)
π¨ Object is possibly βnullβ.ts(2531)
tsconfig
νμΌμμ μμ ν μ½λ κ°λμ μν΄ strict
μ true
λ‘ μ€μ νλλ μ¬λ¬κ°μ§ μλ¬κ° λ°μνμ΅λλ€.
...
deathsList.appendChild(li);
...
μ΄ μ½λμ μλ¬λ©μΈμ§λ λ€μκ³Ό κ°μ΅λλ€.
const deathsList: Element | null;
// π¨ Object is possibly 'null'.ts(2531)
deathsList
μ νμ
μ΄ Element
νΉμ null
μ΄ λ μ μλλ° νμ€νκ² ν΄λ¬λΌλ λ»μ
λλ€.
μ μ΄μ deathList
λ₯Ό μ μΈν λ νμ
λ¨μΈμ νμ€ν ν΄μ£Όλ©΄ λλ μΌμ΄μ§λ§ μ΄ μΈμλ λ€μν ν΄κ²° λ°©λ²μ΄ μμ΅λλ€.
π¨ ν΄κ²° λ°©λ²
1. ifλ¬Έ μ¬μ©
μ½λμ λ°λ‘ μμ€μ if
λ¬Έμ μ¬μ©νμ¬ null
μΌ κ²½μ° return
ν©λλ€.
if (!deathList) {
return;
}
deathsList.appendChild(li);
deathListh
κ° null
μ΄ λλ©΄ return
λμ΄ λ²λ¦¬κΈ° λλ¬Έμ ν΄λΉ μ½λκΉμ§ λ΄λ €κ°μ§ μκ³ μλ¬κ° λ°μνμ§ μμ΅λλ€.
νμ§λ§ μ΄λ κ² λͺ¨λ ν΄λΉ μλ¬ μ½λλ₯Ό if
λ¬ΈμΌλ‘ μμ±νλ©΄ μ½λκ° κΈΈμ΄μ Έ ν¨μ¨μ±μ΄ λ¨μ΄μ§ μ μμ΅λλ€.
2. assertion μ¬μ©(νμ λ¨μΈ)
deathsList!.appendChild(li);
assertion κΈ°νΈ !
λ₯Ό μ¬μ©νλ©΄ ν΄λΉ λ°μ΄ν°κ° null
μ΄ μλλΌκ³ νμ
μ€ν¬λ¦½νΈμ μλ €μ£Όκ² λ©λλ€.
νμ§λ§ assertionμ μ¬μ©ν΄μ νμ λ¨μΈμ νκ² λλ©΄ esLintμμ μννλ€κ³ κ²½κ³ λ₯Ό μ€λλ€.
π νμ λ¨μΈ λ¬Έλ² μ¬μ©μ μ£Όμν΄μΌ ν μ
νμ λ¨μΈμ μ¬μ©νλ©΄ μ£Όμν΄μΌν μ μ΄ μμ΅λλ€.
interface Hero {
name: string;
skill: string;
}
const capt = {} as Hero;
// capt.name = 'capt';
νμ λ¨μΈμ μ¬μ©νλ©΄ μΈν°νμ΄μ€μ μμ± κ°μ μ¬μ©νμ§ μμλ μλ¬κ° λμ§ μλ μνμ±μ κ°μ§κ³ μμ΅λλ€.
λ°λΌμ νμ λ¨μΈμ νμ μ΄ μμ κ²½μ°μλ§ μ¬μ©νλ κ²μ κΆμ₯νλ€.
3. μ΅μ λ 체μ΄λ μ°μ°μ μ¬μ©νκΈ°
μ΅μ
λ 체μ΄λ λ¬Έλ²μ μ¬μ©νλ©΄ ?
κΈ°νΈλ‘ κ°λ¨ν μλ¬λ₯Ό μ‘μ μ μμ΅λλ€.
...
deathsList?.appendChild(li);
...
deathList
κ° null
μ΄λ undefined
λ©΄ νκ°λ₯Ό λ©μΆκ³ undefined
λ₯Ό λ°ννλ€.
π¬ μ΅μ λκΈ