해결된 질문
작성
·
255
·
수정됨
0
{}, 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이기에는 부족합니다.
답변 갑사합니다!