Conditional TypestypescriptTypesextends 조건으로 두 갈래 중 하나를 고르는 타입 연산자다. T extends U ? X : Y 형태로, 타입 사이의 관계를 검사해 컴파일 시점에 결과 타입을 결정한다.→Discriminated UnionstypescriptTypes유니온의 각 멤버에 겹치는 리터럴 필드를 하나씩 심어, 그 필드값으로 나머지 필드 전체를 좁히는 유니온 설계 패턴이다.→infertypescriptTypes조건부 타입의 extends 절 안에서 매칭된 자리의 타입을 새 이름으로 붙잡는 키워드다. 구조를 손으로 인덱싱하지 않고, 패턴에 자리만 표시해 타입을 뽑아낸다.→keyoftypescriptTypes객체 타입에서 프로퍼티 이름만 뽑아 문자열/숫자 리터럴 유니온으로 만드는 타입 연산자다. 타입을 넣으면 그 타입의 키 집합이 나온다.→Mapped TypestypescriptTypes기존 타입의 키를 순회하며 각 프로퍼티를 변형해 새 타입을 만드는 타입 연산자다. Partial·Readonly·Record 같은 유틸리티 타입이 전부 이 위에서 만들어진다.→NarrowingtypescriptTypes조건문·연산자로 걸러낸 값의 타입을 컴파일러가 더 좁은 타입으로 좁혀 읽는 것이다. 유니언 타입에서 분기마다 정확한 타입을 얻는 핵심 메커니즘이다.→OmittypescriptUtility Types3.5타입에서 지정한 키를 뺀 나머지 프로퍼티만 남기는 유틸리티 타입이다. Pick의 반대편에서, keyof와 Exclude를 얹어 "이 키들만 빼고 다"를 표현한다.→PartialtypescriptUtility Types2.1타입의 모든 프로퍼티를 옵셔널로 바꾸는 유틸리티 타입이다. 매핑된 타입으로 keyof를 돌면서 각 프로퍼티에 ?를 붙여, 원래 타입의 부분집합을 표현하는 타입을 만든다.→PicktypescriptUtility Types2.1객체 타입에서 필요한 키만 골라 새 타입을 만드는 유틸리티 타입이다. 매핑 타입으로 원본의 키 집합을 좁혀, 부분집합만 뽑아낸다.→RecordtypescriptUtility Types2.1키 집합과 값 타입 하나로 객체 타입을 조립하는 유틸리티 타입이다. 키마다 값을 반복해 적지 않고, 매핑 자체를 한 줄로 선언한다.→AwaitedtypescriptUtility Types4.5Promise 체인을 재귀적으로 풀어 최종 resolve 타입을 뽑아내는 유틸리티 타입이다. await나 .then()이 실제로 하는 언래핑을 타입 수준에서 그대로 흉내낸다.→const assertionstypescriptTypes3.4리터럴 값에 as const를 붙여 타입을 넓히지 않고, 배열은 readonly 튜플로, 객체는 readonly 프로퍼티로 고정하는 표현이다.→ExcludetypescriptUtility Types2.8유니온 타입에서 특정 멤버를 걸러내는 유틸리티 타입이다. 조건부 타입의 분배 성질을 이용해, 유니온을 멤버별로 쪼개 걸러낸 뒤 다시 합친다.→ExtracttypescriptUtility Types2.8유니언 타입에서 다른 타입에 대입 가능한 멤버만 걸러내는 유틸리티 타입이다. 조건부 타입으로 유니언을 순회하며 맞는 멤버만 남긴다.→Generic ConstraintstypescriptTypesextends로 제네릭 타입 매개변수가 가질 수 있는 형태를 제한하는 문법이다. 제한한 만큼 컴파일러가 그 형태를 알고, 그만큼 안에서 프로퍼티에 접근할 수 있다.→Indexed Access TypestypescriptTypes대괄호 표기 T[K]로 다른 타입의 특정 프로퍼티 타입을 값처럼 조회해 꺼내는 타입이다.→ParameterstypescriptUtility Types3.1함수 타입에서 매개변수 타입들을 튜플로 뽑아내는 유틸리티 타입이다. infer로 매개변수 자리를 통째로 붙잡아, 함수를 호출하지 않고 타입 수준에서 인자 목록의 타입을 얻는다.→ReadonlytypescriptUtility Types2.1타입의 모든 프로퍼티를 읽기 전용으로 바꾸는 유틸리티 타입이다. 매핑 타입으로 각 프로퍼티 앞에 readonly 수식어를 붙여, 재할당을 컴파일 시점에 막는다.→RequiredtypescriptUtility Types2.8옵셔널 프로퍼티를 전부 필수로 바꾸는 유틸리티 타입이다. 매핑 타입의 `-?` 수식자로 물음표를 걷어내, Partial의 반대 방향으로 프로퍼티를 강제한다.→ReturnTypetypescriptUtility Types2.8함수 타입에서 반환 타입만 뽑아내는 유틸리티 타입이다. infer로 반환 자리를 붙잡아, 함수를 실행하지 않고 타입 수준에서 결과 타입을 얻는다.→satisfiestypescriptTypes4.9표현식이 특정 타입을 만족하는지 검사하면서도, 그 표현식에 원래 추론됐을 더 좁은 타입을 그대로 남기는 연산자다.→Template Literal TypestypescriptTypes4.1문자열 리터럴 타입을 템플릿 문자열 문법으로 조합해, 유니온으로 퍼지는 새 문자열 리터럴 타입을 만드는 타입 연산자다.→typeof (type queries)typescriptTypes값의 타입을 타입 자리에서 그대로 읽어오는 연산자다. 변수나 함수를 다시 타이핑하지 않고, 이미 있는 값에서 타입을 파생시킨다.→InstanceTypetypescriptUtility Types2.8생성자 타입에서 인스턴스 타입만 뽑아내는 유틸리티 타입이다. infer로 new의 결과 자리를 붙잡아, 인스턴스를 만들지 않고 타입 수준에서 그 모양을 얻는다.→NoInfertypescriptUtility Types5.4제네릭 타입 추론에서 특정 자리를 후보에서 빼는 유틸리티 타입이다. 그 타입 파라미터를 다른 자리에서만 추론하게 강제한다.→NonNullabletypescriptUtility Types2.8유니언 타입에서 null과 undefined만 걷어내는 유틸리티 타입이다. 조건부 타입으로 두 값을 골라내 never로 지운다.→CapitalizetypescriptUtility Types4.1문자열 리터럴 타입의 첫 글자만 대문자로 바꾸는 유틸리티 타입이다. 컴파일러 내장 함수라 .d.ts 안에는 정의가 없다.→ConstructorParameterstypescriptUtility Types3.1생성자 함수 타입에서 생성자에 넘기는 매개변수 타입만 튜플로 뽑아내는 유틸리티 타입이다.→LowercasetypescriptUtility Types문자열 리터럴 타입의 모든 글자를 소문자로 바꾸는 컴파일러 내장 타입이다. 런타임 없이 타입 수준에서만 문자열을 변형한다.→OmitThisParametertypescriptUtility Types3.3함수 타입에서 this 매개변수를 지워, this 없이 호출할 수 있는 함수 타입으로 바꾸는 유틸리티 타입이다.→ThisParameterTypetypescriptUtility Types3.3함수 타입에서 this 매개변수의 타입만 뽑아내는 유틸리티 타입이다. this 선언이 없으면 unknown으로 떨어진다.→ThisTypetypescriptUtility Types2.3객체 리터럴 안 메서드에서 this가 어떤 타입으로 잡힐지 지정하는 마커 타입이다. 값을 바꾸지 않고, 그 객체 리터럴을 검사하는 타입체커에게 신호만 보낸다.→UncapitalizetypescriptUtility Types4.1문자열 리터럴 타입의 첫 글자만 소문자로 바꾸는 내장 타입이다. 컴파일러가 직접 계산하는 고유(intrinsic) 타입이라 .d.ts 어디에도 정의가 없다.→UppercasetypescriptUtility Types4.1문자열 리터럴 타입의 모든 문자를 대문자로 바꾸는 컴파일러 내장 타입이다. 값이 아니라 타입 수준에서, 리터럴 타입 그 자체를 다른 리터럴 타입으로 변환한다.→