컴파일러는 프로퍼티의 두 가지 요소인 필수요소 프로퍼티의 유무, 프로퍼티 타입을 검사한다.?(Optional Properties)와 readonly(Readonly properties)와 같은 예약어로 프로퍼티를 세밀하게 컨트롤 할 수 있다.프로퍼티 선언 시 이름 끝에
클래스 또는 함수에서 사용할 타입(Type)을, 그 클래스나 함수를 사용할 때 결정하는 프로그래밍 기법동적 타입 언어인 JavaScript와 달리 정적 타입 언어인 TypeScript에서는 제네릭을 지원한다. TypeScript로 구현한 Model 클래스는 일반적으로

컴퓨터 프로그램을 객체(Object)의 모임으로 파악하려는 프로그래밍 패러다임객체(Object)들은 서로 메시지를 주고 받을 수 있으며 데이터를 처리할 수 있다.프로그램을 유연하고 변경이 용이하게 만든다.프로그램의 개발과 보수를 간편하게 만든다.직관적인 코드 분석을 가

Microsoft에서 개발한 오픈 소스 언어자바스크립트의 상위 집합자바스크립트의 한계를 해결동적 타입(자바스크립트)을 정적으로 선언할 수 있다.타입 유추를 통한 타입 제어가 가능하다.컴파일 시점에 오류를 포착할 수 있다.JavaScript에서 찾을 수 없는 추가 코드
비공개로 설정하려는 속성은 private로 설정하고, 속성값을 읽고 수정하는 getter/setter 함수를 사용한다.속성에 직접 접근해 수정하면 데이터 무결성이 깨질 수 있다.(캡슐화 권장)각 객체의 멤버에 접근하는 방법을 세밀하게 제어할 수 있다.읽기만 가능한 속성
JavaScript 객체가 가질 수 있는 넓은 범위의 형태를 기술한다.프로퍼티로 객체를 기술하는 것 외에도, 인터페이스는 함수 타입을 설명한다.함수의 인자의 타입과 반환 값의 타입을 정의한다.함수의 타입을 정의할 때에도 사용한다.타입스크립트 함수는 자바스크립트처럼 함수

객체를 생성하는 인터페이스만 미리 정의하고, 인스턴스를 만들 클래스의 결정은 서브 클래스가 내리는 패턴이다.여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을 때, 입력에 따라 하나의 서브 클래스의 인스턴스를 반환한다.이 디자인 패턴은 객체의 생성과정을 캡슐화하여 클라이

객체가 할 수 있는 행위들을 전략(strategy)으로 만들어두고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 수정이 가능하도록 만든 패턴이다.자판기 결제 방식을 현금 결제에서 카드 결제로 변경할 때, Pay 메소드 구현 변경이 필요하다.메소드 수정 방
다른 클래스들이 파생될 수 있는 기초 클래스직접 인스턴스화 할 수 없다.abstract 키워드는 추상 클래스나 추상 메소드를 정의하는 데 사용된다.이름과 같이 추상적이기 때문에 직접적인 사용은 불가능하다. 대신 사용하고자 하는 class에서 추상클래스를 상속받아서 사용
인터페이스(Interface) 일반적으로 변수, 함수, 클래스에 타입 체크를 위해 사용된다. 직접 인스턴스를 생성할 수 없고 모든 메소드가 추상 메소드이다. 추상 클래스의 푸상 메소드와 달리 abstract 키워드는 사용할 수 없다. (ES6는 인터페이스를 지원하지 않
제너릭에는 원하지 않는 속성에 접근하는 것을 위해 제약조건을 사용할 수 있다. 1\. Constraints: 특정 타입들로만 동작하는 제너릭 함수를 만들 때 사용한다.keyof: 두 객체를 비교할 때 사용한다.제너릭 T에 제약 조건을 설정할 때 사용한다.(문자열이나
"|"를 사용해 두개 이상의 타입을 선언하는 방식이다.유니온과 제너릭은 둘다 여러 타입을 다룰 수 있다는 공통점이 있다. 단, 유니온은 선언한 공통된 메소드만 사용할 수 있고, 리턴 값이 하나의 타입이 아닌 선언된 Union 타입으로 지정된다.다음 코드는 유니온 타

속성 또는 메소드로의 접근을 제한하기 위해 사용TypeScript에는 세 종류의 접근 제어자가 존재한다.(자바와 다르게 package 개념이 없어 default 접근 제어자는 존재하지 않음)public>protected>private프로그램 내에서 선언된 멤버들이 자유
타입스크립트는 공통 타입 변환을 용이하게 하기 위해 유틸리티 타입을 제공한다.유틸리티 타입은 전역으로 사용 가능하다.종류 \-Partial<T>, Readonly<T> \-Record<K,T>, Pick<T,K> \-Omit<T,K>, Ex