typescript
- “type”을 가지고 있다.(javascript와의 차이점, java,c와 비슷함)
- code assistant 활용으로 생산성 향상(vscode에서 지원이 빵빵함)
- AltJS(javascript의 대체언어)중 하나
- 기본적으로 ES6기반으로 씀
- 자체적으로 Babel과 유사한 컴파일러를 가지고 있음
type 지정의 장점
- 에러를 사전 점검할수 있음
문법
- 변수 타입 지정을 반드시 해줘야 함
- 선언과 할당이 함께 되면 타입 지정을 안해줘도 에러가 발생하지않음
정적타이핑
- 변수의 타입 선언, 지정에 맞는 값을 할당하여 사용하는 것
- 동적타이핑과 반대개념, javascript는 동적 타이핑 언어이다.
- 타입에 일치하지 않는 값을 넣었을 때는 에러가 발생(아예 컴파일이 실행 안됨)
- 타입을 써주면 더 확실하다.
- 코드 가독성, 예측성, 안정성의 향상의 장점이 있다.
타입추론
- 타입선언이 생략됐을 때, 선언과 동시에 값을 초기화하지 않으면 any타입이 된다.
- let foo; // let foo: any와 같음.
- javascript var키워드와 같이 재할당이 가능함으로 사용하지 않는 편이 좋다.
클래스
- class body에서 멤버변수를 꼭 선언해야 한다.(ES6은 constructor내부에서만 가능하고 class body에서 선언하면 안된다.)
접근제한자
- public, protected, private
- public 어디서든 참조가능, 공개
- protected 클래스 인스턴스에서 참조불가능, 부분 공개
- private 클래스 내부에서만 참조가능, 비공개
readonly
- 상수가 된다.
- 값을 할당 할 수 없고, 오직 읽기만 가능하다
생성자 파라미터에 접근 제한자 사용
- 아래 두 경우는 실행 결과가 같다.
1 | class Foo{ |
추상클래스(Abstract class)
- 추상 메소드를 포함할 수 있는 클래스.
- 상속만을 위해 사용된다.
- 추상 클래스를 상속하는 클래스는 추상 클래스의 추상 메소드를 반드시 “구현”해야 한다.
인터페이스
- 기계(소프트웨어)와 사용자 간의 접점
- 옛날은 CLI 명령어으로 컴퓨터에 명령을 함(그래픽으로 처리 한 것은 GUI)
- 타입 체크를 위해 일반 변수, 함수, 클래스에 사용함(변수에 타입, 함수의 매개 변수 등)
- 함수의 매개 변수 : 인터페이스 설계대로 리턴타입을 준수해야함
- interface, implements
- interface에서 정의된 프로퍼티 전부를 implements한 클래스 내에서 반드시 구현한다.
덕 타이핑
- 반드시 implements를 쓰지 않아도 interface를 구현한 것으로 인정되는 것
- implements를 하지않아도 interface에 부합하는 메소드나 프로퍼티를 가지고 있다면 implements된걸로(해당 interface타입을 가지고 있는 것) 인정된다.
선택적 프로퍼티
- 인터페이스의 프로퍼티 구현 중 프로퍼티명 뒤에 ? 가 붙어있으면 생략해도 에러가 발생하지 않는다.
제네릭
: <안에 type을 지정> - 클래스를 생성할 때 타입을 지정한다.