타입스크립트 Interface, Generic

skj1211·2022년 5월 6일
0

22.05.06

interface

변수 함수 클래스에 타입체크를 위해 사용
직접 인스턴스를 생성할 수 없고 모든 메소드가 추상 메소드이다.
추상 클래스, 메소드와 달리 abstract키워드는 사용 불가

사용이유
타입의 이름을 짓고 코드안의 계약을 정의 하기 위해

Properties

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도 안된다. 아무것도 하지 못함

Generic

정적 타입 언어는 클래스나 함수를 정의할 때 type를 선언 해야한다.
Generic은 코드를 작성할 때가 아니라 코드가 수행될 때 타입을 명시한다. 재사용률 증가
코드를 작성할 때 식발자를 써서 아직 정해지지 않은 타입을 표시한다.
식별자는 T,U,V,...을 사용

사용이유
재사용성 높은 함수와 클래스를 생성한다. 가독성이 향상된다.
오류를 쉽게 발견한다.

Union type
| 을 사용해 두 개 이상의 타입을 선언 한다.
유니온과 제네릭 모두 여러 타입을 다룬다. 유니온은 선언한 공통된 메소드만 사용 가능
리턴 값은 하나의 타입이 아닌 선언된 유니온 타입으로 지정된다.

제약조건 constraints / keyof

constraints
제네릭 T에 제약 조건을 설정한다. 제약조건을 벗어나는 타입을 선언하면 에러 발생

keyof
두 객체간의 값을 비교할 때 사용하는 제네릭의 제약 조건

디자인 패턴

Factory Pattern

0개의 댓글