typscript 잉여속성검사(Excess Property Checking)
페이지 정보

본문
잉여 속성 검사(Excess Property Checking)는 TypeScript의 중요한 타입 검사 기능입니다!
정의
객체 리터럴을 변수에 할당하거나 함수에 전달할 때, 타입에 정의되지 않은 추가 속성이 있는지 검사하는 기능입니다.예시로 이해하기
interface User {
name: string;
age: number;
}
// ✅ 정상 - 필요한 속성만 있음
const user1: User = {
name: "김철수",
age: 25
};
// ❌ 에러 - 잉여 속성 검사에 걸림
const user2: User = {
name: "이영희",
age: 30,
email: "lee@example.com" // User 타입에 없는 속성!
};
언제 작동하나요?
1. 객체 리터럴을 직접 할당할 때
// ❌ 에러 발생
const user: User = {
name: "박민수",
age: 28,
phone: "010-1234-5678" // 잉여 속성!
};
2. 함수에 객체 리터럴을 직접 전달할 때
function printUser(user: User) {
console.log(user.name, user.age);
}
// ❌ 에러 발생
printUser({
name: "최지영",
age: 26,
address: "서울시" // 잉여 속성!
});
언제 작동하지 않나요?
1. 변수를 통해 전달할 때
// ✅ 에러 없음 - 잉여 속성 검사 우회
const userData = {
name: "정수진",
age: 24,
hobby: "독서" // 잉여 속성이지만 변수로 전달하면 OK
};
const user: User = userData; // 에러 없음!
2. 타입 단언 사용할 때
// ✅ 에러 없음
const user: User = {
name: "한소영",
age: 29,
nickname: "소소"
} as User;
왜 이런 기능이 있나요?
- 실수 방지: 오타나 잘못된 속성명 사용을 막아줍니다
- 타입 안전성: 예상치 못한 속성으로 인한 버그를 방지합니다
- 코드 품질: 더 엄격한 타입 검사로 코드 품질을 향상시킵니다
-
인덱스 시그니처 추가
interface User { name: string; age: number; [key: string]: any; // 추가 속성 허용 }
- 변수 사용
- 타입 단언
- 이전글Memcached 기본 사용법 25.09.26
댓글목록
등록된 댓글이 없습니다.