문제사항
- DOM 객체를 받아올때나, 변수를 할당할때 null 값일 가능성이 있다..
const nextElement = currentElement.getAttribute('value');
- 이때 null 값이 아니라고 분기처리를 하는 것이 가장 기본적인 방법이지만, 더 편리한 방법을 찾고 싶다.
const nextElement = currentElement.getAttribute('value');
if(nextElement !== null) {
}
- type annotation 과 함께 사용한다면, null 값일 경우를 고려하라는 오류를 뱉어낸다.
이 경우 null 값이 할당될 수 있음을 명시하면 해결 된다. (여전히 null 값이 아닐 때를 분기처리해야한다.)
const nextElement : HTMLElememt = currentElement.getAttribute('value');
const nextElement : HTMLEement | null = currentElement.getAttribute('value');
- 하지만 우리는 반드시 null 값이 들어오지 않는다는 보장이 있다고 하자. 어떻게 해야할까?
해결방법
Non-null assertion
- 해당하는 변수의 마지막에
!
키워드를 이용하면 (post-fix), 이 변수는 절대로 null 값이 아니라는 걸 알리려고 쓴다.
const nextElement : Element = currentElement.getAttribute('value')!;
- 단, 이 경우 코드상으로 절대로 null 값이 들어오면 안되므로, 확실한 경우에만 사용해야 한다.
참고사이트