설명

[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