중첩된 객체의 타입은 어떻게 선언해야 할까?
type NestedPerson = {
identity: {
name: string;
age: number;
},
nationality: string;
};
const person: NestedPerson = {
identity: {
name: '태연',
age: 32,
},
nationality: '한국인',
};
여기서 의문점이 생길 수 있다. identity의 타입에 있는 객체를 또 다른 타입으로 독립적으로 선언해줄 수 있지 않을까? 그리고 그렇게 했을 때와 하지 않았을 때의 차이점도 있을 수 있다.
위의 코드에서 타입을 독립적으로 선언한 것을 적용한 코드는 아래와 같다.
type TIdentity = {
name: string;
age: number;
};
type TPerson = {
identity: TIdentity;
nationality: string;
};
구조적으로는 완벽히 동일하다. 하지만 두 경우의 차이는 에러 메세지에 있다.


중첩된 객체의 타입을 독립적으로 선언한 코드에서의 에러 메세지가 해당 타입의 이름으로 보여지기 때문에 좀 더 보기가 편한 것을 볼 수 있다.
(interface로 선언한 타입이라도 위와 동일하게 동작한다)