더북(TheBook)

참고로 에러 메시지에는 에러 메시지 여러 개가 동시에 표시될 수 있습니다. 앞의 코드도 에러 메시지가 두 개, 즉 { hello: string; why: string }Example 타입에 대입할 수 없다는 에러와 'why' 속성이 Example 타입에 존재하지 않는다는 에러가 있는데, 두 번째 에러가 첫 번째 에러보다 더 구체적인 에러입니다. 따라서 에러를 분석할 때 에러 메시지가 여러 개 있다면 위에서 아래로 읽으면서 구체적인 에러의 위치를 찾아나가면 됩니다(이 책은 지면 관계상 모든 에러 메시지를 표시하는 대신 중요한 에러 메시지만 표시합니다).

함수에서도 같은 현상이 발생합니다.

interface Money {
  amount: number;
  unit: string;
}

const money = { amount: 1000, unit: 'won', error: '에러 아님' };

function addMoney(money1: Money, money2: Money): Money {
  return {
    amount: money1.amount + money2.amount,
    unit: 'won',
  }
}
addMoney(money, { amount: 3000, unit: 'money', error: '에러' }); 
// Argument of type '{ amount: number; unit: string; error: string; }' is not assignable to parameter of type 'Money'. Object literal may only specify known properties, and 'error' does not exist in type 'Money'.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.