객체 - 초과 속성 검사

Changhan·2025년 1월 27일

Typescript

목록 보기
20/29
type TName = {
  name: string;
};
type TAge = {
  age: number;
};

const taeyeon = {
  name: '태연',
  age: 32,
};

변수 taeyeon의 타입을 TName으로 선언하면 age 프로퍼티에서 에러가 나고, 타입을 TAge로 선언하면 name 프로퍼티에서 에러가 날 것이다.

하지만 다음과 같은 경우를 보자.

const testName: TName = taeyeon;

새로운 testName이라는 변수를 TName으로 선언했다. 여기까지만 보면 testName은 name이라는 프로퍼티만 가지면 된다. 하지만 이 변수에 taeyeon을 할당했다. taeyeon은 name 뿐만 아니라 age 프로퍼티까지도 가지고 있다. 뭔가 이상한데 에러가 발생하지 않는다.

taeyeon이라는 객체를 가진 변수가 다른 변수에 할당할 때 타입스크립트는 TName 타입을 보는 것이 아니라, taeyeon의 타입을 보게 된다.
그래서 초과속성이 허락이 되는 것이다.

초과속성을 허락하지 않으려면 다음과 같이 변수 형태가 아니라 객체 리터럴로 넣어줘야 한다.

const example: TName = {
  name: '태연',
  age: 32, // age에서 에러가 남
};

0개의 댓글