๐จ 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
๋ฅผ ๋ฐํํ๋ค.
Leave a comment