Optional chaining
Optional chaining이란?
?. 을 사용하여 프로퍼티가 없는 중첩 객체를 안전하게 접근할 수 있도록 도와주는 문법이다.
예전에는 중첩된 객체 속성에 접근할 때, 중간에 있는 속성이 null 또는 undefined인 경우 에러가 발생했었는데 Optional chaining 문법을 사용하면 이런 에러를 방지할 수 있다.
(Optional chaining 연산자는 체인의 각 참조가 유효한지 명시적으로 검증하지 않고, 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있다.)
사용법
객체 뒤에 .?이라는 문법을 사용하는데 객체의 값이 null 이거나 undefined 인 경우에는 에러가 뜨지않고 undefined값이 반환된다. 반면 값이 있을 경우에는 '.' 뒤의 값이 실행되게 된다.
예시
예를 들어 user?.address?. city와 같이 사용할 수 있다. 이 경우 만약 user, address 또는 city 중 하나라도 값이 없으면 코드가 멈추지 않고 그냥 undefined를 반환한다. 이전에는 이런 상황에서 TypeError가 발생했었는데, optional chaining을 사용하면 에러를 피할 수 있다.
const user = (await Users.findOne({ where: { email } }))?.toJSON();
위와 같은 경우에는 users에 값이 들어있는 경우에만 .toJSON()이 실행된다.
const [tokenType, accessToken] = req.headers.authorization?.split(' ');
이런식으로 req.headers.authorization값이 없으면 실행되지 않고 req.headers.authorization값이 존재할 경우에만 split(' ')을 실행하라는 의미로도 사용할 수 있다.
'Javascript' 카테고리의 다른 글
아스키코드[JS] (1) | 2023.12.28 |
---|---|
[Javascript] 정규 표현식 + replace() (1) | 2023.12.01 |