const x: {} = 'hello'
const y: Object = {}
/**
* {}와 대문자 Object는 모든 타입을 정의한다 (null과 undefined 제외)
*/
const z: object = '123'
const a: object = {a: 1}
/**
* 소문자 object로 객체 타입을 정의할 수 있지만, interface, type, class로 사용 권장한다.
*/
const z: unknown = 'hi'
if (z) { // z: unknown
z; // z: {}
} else {
z // z: unknown
}
여기서 20라인의 변수 z의 타입이 const z: {}
로 나오는 이유는, z의 타입이 unknown
, 결국 모든 타입이라는 의미이기 때문에 {} = 모든 타입
으로 추론된다.
{}(모든타입) | null | undefined
이 합쳐진거라 이해할 수 있다