Typescript - 잉여 속성 검사

00_8_3·2023년 4월 8일
0

typescript

목록 보기
3/8

초과 프로퍼티 검사

  • 잉여 속성 검사 === 초과 프로퍼티 검사 (Excess property checks)
    잉여 속성 : 리터럴 객체의 프로퍼티의 타입을 검사할 때 객체 프로퍼티 타입에 포함되지 않은 것
type Test = {
	name: string
  	age: number
}

// 잉여 속성이 발생하여 에러가 발생.
// email이 잉여 속성
const test: Test = { name: "ehgks", age: 1, email: "ehgks@test.com"} 

const tmp = { name: "ehgks", age: 1, email: "ehgks@test.com"} 

// 같은 잉여 속성이 있지만 에러가 발생하지 않는다.
// 참조 타입을 할당하는 경우 잉여 속성 검사가 생략된다.
const test2: Test = tmp;

요건 왜 오류 일까?

잉여 속성 검사에 따르면 참조 객체가 변수에 들어가는 경우 생략이 되어야 하는데(오류가 통과)
왜 오류가 나올까?

type Animal = { breath: true };
type Mammal = Animal & { breed: true };
type Human = Mammal & { think: true };
const test = { breath: true, breed: true, think: true };
const sumin: Human = test;

test 상수의 타입이 boolean으로 추론 되었기 때문에
true 타입에 들어갈 수 없어서 잉여 속성 검사가 아니다.

참고

0개의 댓글