Non-null assertion operator
변수의 내부 값에 접근할때 TS 컴파일러는 항상 null, undefined 체크를 해준다.
이때, Non-null assertion operator(!)는 TypeScript에게 해당 속성이 null 일 수 있는 것처럼 보이지만 해당 값은 null이 들어오지 않는다고 확신해준다.
optional chaining operator
optional chaining operator (?.) 는 체인의 각 참조가 유효한지 명시적으로 검증하지 않고, 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있다.
optional chaining 과 non-null assertion의 차이점
non-null assertion -> null, undefined 일 경우는 없음을 확신
optional chaining -> null, undefined 이면 undefined 을 리턴
non-null assertion의 경우, 속성 체인을 null로 보호하지 않는다.
이미 값이 null이 되지 않을 것이라고 TypeScript에 알렸기 때문이다.
따라서 실제 해당 속성이 null 일 경우 에러가 발생한다.
반면 optional chaining의 경우, 속성 체인을 진행하기 전에 속성이 null인지 아닌지 검사를 한다.
속성이 null 이거나 undefined으로 확인되면 TypeScript는 속성 체인 실행을 더 이상 중지하고 코드를 계속 진행하므로 속성값이 null, undefined여도 에러가 발생하지 않는다.
'Front-end > TypeScript' 카테고리의 다른 글
[TypeScript] Literal type, keyof, typeof (0) | 2022.08.12 |
---|---|
[TypeScript] 유틸리티 타입(제네릭 타입) (0) | 2022.08.11 |
[TypeScript] DefaultProps & Styled-Components 타입지정 (0) | 2022.04.21 |