코틀린에도 있는 문법. 그러나 백엔드의 경우, 통제 가능한 영역에서는 최대한 nullable type을 줄이고, 통제가 어려운 데이터는 가능하면 받자마자 처리 후 내부적으로는 non-nullable type으로 다루는 것이 편하다고 생각한다.
그래서 지금까지는 사용할 일이 많이 없었지만.. 프론트엔드에서는 사용할 일이 종종 있을 것 같아서 한번 알아보았다.
다음과 같은 users가 있다.
name
이 B
, E
인 element(user)는 address
라는 프로퍼티가 없다.
이때, 아래처럼 address
의 street
에 접근하려고 하면 에러가 발생한다.
name
이 B
, E
인 user의 address
는 undefined
이기 때문에
루프를 돌다 보면 u.address.street
이라는 코드가 u.undefined.street
이 되기 때문.
?.
)이 없을 때 사용했던 해법u.address && u.address.street
?.
)을 사용한 해법u.address?.street
해석: 'address
'가 undefined
또는 null
이야'?' 그럼 이 부분(u.address?.street
)은 그냥 undefined
라고 하자)
참고) Object에 함수 넣는 법
{ foo() {} }
또는
{ foo: () => console.log('foo') }
아래처럼, 호출할 때 ()
대신 ?.()
사용하여 해결
[]
를 사용하는 경우?.[]
도 된다.