22.05.06
변수 함수 클래스에 타입체크를 위해 사용
직접 인스턴스를 생성할 수 없고 모든 메소드가 추상 메소드이다.
추상 클래스, 메소드와 달리 abstract키워드는 사용 불가
사용이유
타입의 이름을 짓고 코드안의 계약을 정의 하기 위해
optional properties
프로퍼티 선언 시 끝에 ? 를 붙여 표시
인터페이스에 속하지 않는 프로퍼티 사용을 방지, 사용 가능한 프로퍼티를 기술할 때 사용
readonly properties
프로퍼티 앞에 readonly를 붙여 표시
객체가 처음 생성될 때만 값이 설정 가능, 이후 수정 불가
readonly, const
공통점 : 생성 후 배열을 변경하지 않음을 보장
변수에는 const사용, 프로퍼티에는 readonly사용
let arr: number[] = [1,2,3,4,5]
let readonly_arr: ReadonlyArray<number> = arr;
readonly_arr는 배열 안의 값 변경도 안되고 push도 안된다. 아무것도 하지 못함
정적 타입 언어는 클래스나 함수를 정의할 때 type를 선언 해야한다.
Generic은 코드를 작성할 때가 아니라 코드가 수행될 때 타입을 명시한다. 재사용률 증가
코드를 작성할 때 식발자를 써서 아직 정해지지 않은 타입을 표시한다.
식별자는 T,U,V,...을 사용
사용이유
재사용성 높은 함수와 클래스를 생성한다. 가독성이 향상된다.
오류를 쉽게 발견한다.
Union type
| 을 사용해 두 개 이상의 타입을 선언 한다.
유니온과 제네릭 모두 여러 타입을 다룬다. 유니온은 선언한 공통된 메소드만 사용 가능
리턴 값은 하나의 타입이 아닌 선언된 유니온 타입으로 지정된다.
constraints
제네릭 T에 제약 조건을 설정한다. 제약조건을 벗어나는 타입을 선언하면 에러 발생
keyof
두 객체간의 값을 비교할 때 사용하는 제네릭의 제약 조건
Factory Pattern