Exclude 타입은 다음과 같이 T로부터 U를 제거하는 타입임.직접 구현하면 다음과 같음.Extract 타입은 다음과 같이 T로부터 U를 추출하는 타입임.직접 구현하면 다음과 같음.ReturnType은 타입변수 T에 할당된 함수 타입의 반환값 타입을 추출하는 타입임.
Pick은 특정 객체 타입에서 일부 프로퍼티만 골라내는 유틸리티 타입임.Omit은 특정 객체 타입에서 일부 프로퍼티만 제외하는 유틸리티 타입임.Record는 키-값 쌍을 가지는 객체 타입을 생성할 때 사용함.
타입스크립트의 Partial<T>, Required<T>, Readonly<T>는 맵드 타입 기반의 유틸리티 타입으로, 객체 타입의 프로퍼티를 선택적, 필수, 읽기 전용으로 변환함. 이들은 제네릭 + keyof + 맵드 타입의 조합으로 구현할 수 있음.
유틸리티 타입은 타입스크립트가 제공하는 특수한 타입 조합 도구임.제네릭, 맵드 타입, 조건부 타입 등을 조합해 자주 쓰이는 형태의 타입을 미리 구현해둔 것임.대표적인 유틸리티 타입으로는 Readonly<T>, Partial<T> 등이 있음.이번 섹션에서는 이
infer는 조건부 타입 안에서 특정 타입을 추론할 수 있게 해주는 타입스크립트의 특수 문법임.infer는 보통 조건부 타입 내부에서 사용되며, 추론 가능한 타입이 있을 경우 해당 타입을 바탕으로 분기된 타입 결과를 생성함.대표적인 활용 예시로는 ReturnType&l
조건부 타입에 유니온 타입을 넣으면 각 요소에 대해 조건이 개별로 평가되는 분산 조건부 타입이 작동함.이를 이용해 Exclude, Extract 등 다양한 유틸리티 타입을 직접 구현 가능함.조건부 타입의 타입 변수에 Union 타입이 들어가면, 조건이 각 요소별로 분리
조건부 타입은 extends와 삼항 연산자(? :)를 활용해 타입을 상황에 따라 다르게 설정할 수 있게 해줌. 특히 제네릭과 함께 사용할 때 매우 강력하며, 값의 타입에 따라 반환 타입을 유연하게 조절할 수 있음. 타입스크립트의 타입 로직에 논리적 분기를 넣을 수 있다
템플릿 리터럴 타입은 문자열 패턴을 조합해 새로운 문자열 리터럴 유니온 타입을 만드는 타입스크립트의 타입 조작 기능임. 여러 문자열 유니온 타입을 조합할 때 반복적인 수작업 없이 효율적으로 조합 가능함.템플릿 리터럴 타입은 타입 조작 기능 중 가장 단순한 기능으로, 템
맵드 타입(mapped type)은 기존 객체 타입을 기반으로 새로운 객체 타입을 유연하게 생성할 수 있는 타입스크립트의 기능임. keyof, 인덱스드 엑세스 타입 등과 결합해 중복 없이 코드를 간결하게 유지할 수 있음.이 맵드 타입은 다음과 같은 결과 타입이 됨:ke
keyof 연산자는 객체 타입에서 모든 프로퍼티 키를 문자열 리터럴 유니온 타입으로 추출함.수동으로 "name" | "age" 같은 키 목록을 명시하지 않고, 타입에서 자동 추출할 수 있어 유지보수에 용이함.keyof는 타입에만 적용 가능하며, 값에는 사용할 수 없음.
인덱스드 엑세스 타입은 객체, 배열, 튜플에서 특정 속성의 타입을 추출할 때 사용함.문법은 타입명\["프로퍼티명"] 또는 타입명\[숫자] 형태로 사용함.객체 속성 변경 시 매개변수 타입도 자동 반영 가능함.유효하지 않은 인덱스 사용 시 오류 발생함.배열/튜플의 요소 타

타입스크립트에서 타입 조작이란 기존 타입(기본 타입, 인터페이스, 타입 별칭 등)을 상황에 따라 동적으로 변형하는 기능을 의미함. 주요 도구로는 인덱스드 엑세스 타입, keyof 타입, 맵드 타입, 템플릿 리터럴 타입 등이 있으며, 제네릭 또한 타입 조작의 일부로 볼
Promise<T>는 제네릭 클래스로, resolve의 결과값 타입을 T로 설정할 수 있다.reject의 값은 타입을 지정할 수 없으며, 기본적으로 unknown이다.then() 메서드는 resolve 값을, catch() 메서드는 reject 값을 다룬다.함수의
먼저 제네릭이 아닌 간단한 Number 타입의 리스트를 생성하는 클래스를 정의합니다.StringList도 필요하다면 클래스 정의를 중복하게 됩니다.이렇게 되면 코드 중복이 심하고 유지보수도 어려워집니다.다음과 같이 제네릭을 적용해 다양한 타입의 리스트를 처리할 수 있는
제네릭은 인터페이스, 타입 별칭, 함수 등에 적용 가능제네릭 인터페이스는 다양한 타입을 유연하게 표현할 수 있음인덱스 시그니처, 유니온 타입, 조건 분기, 함수 매개변수 제한 등 실용도가 높음타입 추론은 불가하므로 반드시 타입 인자를 명시해야 함제네릭 인터페이스는 객체
map과 forEach 메서드는 배열의 각 요소에 콜백을 적용하는 대표적인 고차함수map: 반환값을 기반으로 새로운 배열 생성forEach: 반환값 없이 순회 목적으로 사용타입스크립트에서는 제네릭 타입을 사용해 다양한 타입에 대응 가능map의 경우 원본 배열과 다른 타
제네릭은 타입의 재사용성과 정확성을 높이기 위해 사용됨타입 변수는 여러 개(T, U 등) 동시에 사용할 수 있음배열, 튜플 등 다양한 타입 구조에 활용 가능extends를 사용하면 타입 변수에 제한(제약 조건)을 걸 수 있음활용 방법에 따라 타입 추론 정확도와 타입 안
제네릭(Generic)은 함수, 클래스, 타입 등을 다양한 타입과 함께 동작하도록 만들어주는 기능any나 unknown으로는 타입 안정성을 완전히 확보하기 어려움제네릭을 사용하면 입력된 타입에 따라 반환 타입을 자동으로 지정할 수 있음호출 시 직접 타입을 명시할 수도
c++, java랑 동일.인터페이스는 클래스가 따라야 할 구조를 명시함implements를 사용해 클래스가 특정 인터페이스를 구현하게 할 수 있음인터페이스에 명시된 필드/메서드는 클래스에서 모두 구현해야 함접근 제어자 public인 필드만 인터페이스 조건을 만족함타입스
c++ 접근 제어자와 거의 동일다른 점은 멤버 변수 앞에 private나 protected를 각각 붙혀서 사용.접근 제어자는 생성자 매개변수에 직접 설정 가능하다.이 경우 필드 선언과 초기화 코드를 생략할 수 있다.접근 제어자는 public, private, prote