<aside> 📌 타입을 사용할 때 제네릭으로 프로퍼티의 타입을 지정할 수 있다.

</aside>

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

interface Eunji extends Person<'eunji', 28> {}
interface Minji extends Person<'minji', 28> {}

제네릭 사용 가능 위치

객체/클래스의 메서드에 제네릭 표기하기

interface IPerson<N, A> {
	type: 'person';
	name: N;
	age: A;
	method: <B>(param: B) => void;
}

타입 매개변수에 default 값 사용하기

interface Person<N = string, A = number> {
	type: 'person';
	name: N;
	age: A;
}

type Person1 = Person;
type Person2 = Person<number>;
type Person2 = Person<number, boolean>;

제네릭의 타입 추론