더북(TheBook)

타입스크립트는 제네릭에 직접 타입을 넣지 않아도 추론을 통해 타입을 알아낼 수 있습니다.

interface Person<N, A> {
  type: 'human',
  race: 'yellow',
  name: N,
  age: A,  
}

const personFactoryE = <N, A = unknown>(name: N, age: A): Person<N, A> => ({
  type: 'human',
  race: 'yellow',
  name,
  age,
});

const zero = personFactoryE('zero', 28);
// const zero: Person<string, number>

변수 zeroname 매개변수에 'zero'를, age 매개변수에 28을 인수로 넣었습니다. name: string, age: number이므로 Nstring이, Anumber가 됩니다. A에 기본값으로 unknown이 들어 있지만 number가 좀 더 구체적인(좁은) 타입이므로 unknown 대신 number로 추론합니다. 따라서 zero의 타입은 반환값 타입인 Person<string, number>입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.