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

    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>입니다.

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