설명
Generic<T extends U>
꼴에서 U
부분에 사용할 수 있는 한정 타입들
[1] 오브젝트
type Obj1 = {}
type Obj2 = Record<string, any>
[2] 배열
type Arr = any[]
[3] 클래스 또는 생성자
type Constructor = new (...args: any[]) => any;
// [1] 클래스 타입으로 받는 경우
class TestClass {}
type GetClass<T extends Constructor> = {};
type GetClassTest = GetClass<typeof TestClass>; // 클래스 타입 전달
// [2] 생성자를 매개변수로 받는 함수
function getConstructor(arg: Constructor) {}
getConstructor(TestClass); // 클래스 생성자 함수 전달 (값이 생성자 함수임)
[4] 함수
type Func1 = Function
type Func2 = (...args: any) => any