분산적인 조건부 타입은 다음과 같이 동작합니다.타입 변수에 할당한 Union 타입 내부의 모든 타입이 분리됩니다. 따라서 StringNuberSwitch<number | string> 타입은 다음과 같이 분산됩니다.\-> StringNumberSwitch<
템플릿 리터럴 타입은 타입 조작 기능들 중 가장 단순한 기능으로템플릿 리터럴을 이용해 특정 패턴을 갖는 String 타입을 만드는 기능입니다.ColoredAnimal 타입에 추가해야하는 타입이 점점 많아지게 됩니다. 이럴 때 바로 템플릿 리터럴 타입을 이용하면 좋습니다
위의 코드 같이 작성하면 key의 타입을 “name” | “age”로 정의했는데 이렇게 정의하면 다음과 같이 Person 타입에 새로운 프로퍼티가 추가되거나 수정될 때 마다 이 타입도 계속 바꿔줘야 합니다.Keyof 연산자를 이용하면 이런 점을 쉽게 해결할 수 있다.
Post타입의 author 프로퍼티가 수정, 추가되어도 따로 수정 안해줘도 된다.Post"author"는 Post 타입으로부터 author 프로퍼티의 타입을 추출합니다. 대괄호 속에 들어가는 String Literal 타입인 “author” (값이 아니라 타입이다.)
프로미스(Promise) 😎 Promise는 제네릭 클래스로 구현되어 있습니다. ➡️ 프로미스를 반환하는 함수의 타입을 정의
제네릭 인터페이스 ➡️ 인덱스 시그니쳐와 함께 사용하기 ➡️ 제네릭 타입 별칭 ➡️ 제네릭 인터페이스의 활용 예시 👍 제네릭 인터페이스로 바꾸기
만약 2개의 타입 변수가 필요한 상황이라면 다음과 같이 T, U 처럼 2개의 타입 변수를 사용해도 됩니다.다양한 배열 타입을 인수로 받는 제네릭 함수를 만들어야 한다면 다음과 같이 할 수 있습니다.튜플 타입과 나머지 파라미터를 이용한 방법타입 변수를 제한하는 사례 타입
제네릭 함수는 두루두루 모든 타입의 값을 다 적용할 수 있는 그런 범용적인 함수인수에 특정 타입의 인수를 넣었을때 타입을 저절로 그 타입이 나오도록 설정하고 싶을떄
접근 제어자(Access Modifier)는 타입스크립트에서만 제공되는 기능으로클래스의 특정 필드나 메서드를 접근할 수 있는 범위를 설정하는 기능입니다.
생성자 함수에서 필드의 값들을 잘 초기화 해 준다면 필드 선언시의 초기값은 생략해도 됩니다.클래스를 타입으로 사용하면 해당 클래스가 생성하는 객체의 타입과 동일한 타입이 됩니다.
위의 중복된 코드를 해결할 클래스 문법 사용하기앞서 만든 Student 클래스를 기반으로 추가적인 필드와 메서드를 갖는 클래스를 선언하고 싶다면 상속을 하면 된다.
타입 별칭은 동일한 스코프 내에 중복된 이름으로 선언할 수 없는 반면 인터페이스는 가능합니다.중복된 이름의 인터페이스 선언은 결국 모두 하나로 합쳐지기 때문입니다.동일한 이름의 인터페이스들이 합쳐지는 것을 선언 합침(Declaration Merging)이라고 부릅니다.
하나의 인터페이스를 다른 인터페이스들이 상속받아 중복된 프로퍼티를 정의하지 않도록 도와주는 문법interface 타입이름 extends 확장할타입이름 형태로 extends 뒤에 확장할 타입의 이름을 정의하면 해당 타입에 정의된 모든 프로퍼티를 다 가지고 오게 됩니다.
인터페이스란 타입 별칭과 동일하게 타입에 이름을 지어주는 또 다른 문법타입 별칭에서는 Union이나 Intersection 타입을 정의할 수 있었던 반면 인터페이스에서는 할 수 없습니다.Union이나 Intersection 타입을 정의 방법인터페이스로 만든 타입을 Un