설명
일반적으로 javascript 는 유효하지 않은 속성에도 접근이 가능하며 undefined 를 반환한다.
객체에 해당 속성이 자체가 없는 경우나 속성이 아직 정의되지 않은 경우 모두 undefined 인 조금은 아이러니한 상황을 마주 할 수 있다.
typescript 에서 Optional Properties 를 활용해 앞서 언급한 위 두 상황을 조금 더 명확하게 표현 할 수 있다.
// appleCount 속성의 타입이 number이거나 undefined입니다.
interface fruitStoreA {
appleCount: number| undefined
}
// appleCount 속성이 존재하지 않을 수 있으며, 존재한다면 그 타입이 number입니다.
// appleCount 속성에 접근할 경우, 존재하지 않는다면 undefined를 반환합니다.
interface fruitStoreB {
appleCount?: number
}
결론
물론 위에서도 언급한 것처럼javascript 특성 상 위 두 상황을 명확하게 구분하지 않아도 될 상황이 10 에 9 은 되겠지만(심지어 ts 에서도 두 상황을 바꿔서 사용해도 거의 문제없을 것으로 예상 된다.) api 요청, 응답 객체같이 명확하게 구분해야 하는 상황이 있을 수 있으니 명확하게 이해할 필요가 있다.
참고
https://www.typescriptlang.org/docs/handbook/2/objects.html#optional-properties
'TypeScript' 카테고리의 다른 글
[TypeScript] if/else, switch 대신 객체 리터럴 패턴 활용 (0) | 2024.07.03 |
---|