• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

{}, Object, object 타입에 대한 질문입니다!

23.06.18 14:41 작성 23.06.18 14:43 수정 조회수 175

0

  1. {}, Object 타입이 모든 타입을 말하는데

이게 왜 ts 에서 이렇게 개발을 했을까요 ....?

혹시 js 에서 배열도 객체, string도 객체 이런거랑 관련 있을까요 ????

2. object 타입을 지양하라고 말씀해주셨는데 구체적인 그 이유는 무엇인가요 ????

3. 강의 예시에서
// unknown = {} | null | undefined

if (z) {

z; // {} 이다. 왜 ? null, undefined가 떨어져 나가니까.

} else {

z;
}

이 부분에서 else 문안에 있는 z는 왜 여전히 unknown 인가요 ??? 위의 if 문 안의 z가 null, undefined이 떨어져 나가는 것처럼 else 문 안의 z도 {} 등(내부 로직을 모르니 ...)도 떨어져 나가야되는게 맞지 않나요 ???

답변 1

답변을 작성해보세요.

1

왜 그렇게 만들어졌는지는 제가 만든 게 아니라서 정확히 알기 어렵습니다. Object는 모든 값의 프로토타입이 객체라서 그렇다고 추측해볼 수는 있겠네요. 설계 미스일 수도 있고요.

object를 쓸 곳이면 애초에 구체적으로 객체를 타이핑하면 됩니다. object만을 넣는 게 의미가 있는 경우가 거의 없습니다.

타입스크립트가 타입 추론이 완벽하지 않아서 그렇습니다. 참고로 else에서 z는 NaN, '', 0같은 다른 falsy 값일 수도 있어서 null | undefined이기에는 부족합니다.

 

답변 갑사합니다!