: property를 정해서 객체를 표현하고자 할 때 쓴다.
interface User {
name: string;
age: number;
gender?: string; // 선택적 매개변수, optional 한 것을 적용시 사용. (기본값 적용 불가)
read only birthYear: number; // 읽기 전용 속성
[grade: number]: string;
}
인터페이스로 함수와 클래스도 정의할 수 있다.
...
➡️ rest parameter (나머지 매개변수)는 표현 시 ...nums: number[]
오버로드 사용 ➡️ 동일한 함수지만 매개변수의 타입이나 갯수에 따라 다른 방식으로 동작해야한다면 사용
|
&
접근 제한자(access modifier)
read only: 읽기 전용, constructor로 수정가능
static: 정적 멤버변수나 메서드는 this나 클래스명을 적어준다.
추상 class: 클래스명 앞에 abstract
키워드를 붙여 줌. new
를 이용해 객체를 만들 수 없다. 상속을 통해서만 사용 가능. 정의만 있을 뿐, 몸통이 구현된 게 없다. 추상 클래스 내부에 추상 메서드는 반드시 상속 받은 곳에서 구체적인 구현을 해야 함.
⭐️추상화: property나 메서드의 이름만 선언해주고, 구체적인 기능은 상속받는 쪽에서 구현해주는 것.
➡️ 동일한 이름을 가질 수 있지만, 구체적인 기능은 다 다를 수 있다
class, 함수, interface를 다양한 타입으로 재사용하게 함.
선언할 때는 type parameter만 적어주고 생성하는 시점에 사용하는 type을 결정하는 것.
대표적인 예시 <T>
type을 뜻하는 T를 주로 쓴다.
keyof
: 인터페이스의 key 값들을 유니언 형태로 받을 수 있다.
Partial<T>
: property를 모두 optional 하게 만들어 준다. 일부만 사용하는 걸 가능하게 함. ( ↔️ Required<T>
)
Readonly<T>
: 읽기 전용으로 만듬
Record<K, T>
: 타입의 프로퍼티의 집합 K로 타입을 구성
Pick<T, K>
: 타입에서 프로퍼티 K의 집합을 선택해 타입을 구성 ( ↔️ Omit<T, K>
: 프로퍼티들을 제거)
Exclude<T1, T2>
: 타입으로 제거 (T1 중에 T2 값을 제거)
NonNullable<T>
: null 과 undefined를 제외시킴