본문 바로가기
개발 언어/TypeScript

02 TypeScript - 특징 및 타입

by 우주다람쥐 2018. 4. 5.
반응형

2. 특징 및 타입

 

TypeScript의 특징 및 타입을 공부해보자.

 

TypeScript의 공식 홈페이지 는 다음과 같고, Document에 들어가면 더 많은 정보를 알 수 있다.

 

(1) 특징

 

가. 컴파일 동작 (  Compilation )

 

javascript 언어는 인터프리터 언어이다. 따라서 코드가 유효한지 알기 위해서는 실행을 해야 알 수 있다. 결국 코드에서 발생되는 버그를 찾기 위한 많은 시간이 발생된다. 하지만 Typescript 는 컴파일러에 의해서 오류 검사를 할 수 있다. 즉 TypeScript는 코드를 컴파일하고 구문 오류를 발견하면 컴파일 오류를 발생시킨다.

 

나. 강력한 정적 타입 지정 ( Strong static Typing ) 

 

javascript 언어는 엄격하지 않은 타입 언어이다. TypeScript에는 TLS (TypeScript Language Service)를 통한 선택적 정적 유형 지정 및 형식 유추 시스템이 함께 제공된다. 유형이 없는 것으로 선언 된 변수의 유형은 값에 따라 TLS에서 유추 할 수 있다. 

 

다. 외부 라이브러리를 위한 type definition 파일 지원 ( .d.ts 파일 ) 

 

typescript는 타입을 사용하여 어플리케이션을 개발하는데, 외부 라이브러리는 Typescript가 아니기 때문에 타입을 사용하지 않고 개발되었을 수도 있기 때문에 외부 라이브러리에 대한 타입 정의(type definition)을 제공한다.

 

라. 객체 지향 프로그래밍 지원 

 

클래스, 인터페이스, 상속 등

 

마. TypeScript 식별자

 

- 식별자는 변수, 함수등에 사용 가능한 이름이다.

- 식별자는 숫자로 시작할 수 없다. 

- 식별자는 _ , $ 이외의 특수 문자 사용 불가. 

- 키워드 사용 불가 

- 식별자는 대소문자 구별한다. 

- 식별자에는 공백 포함 안됨.

 

 

바. TypeScript 키워드 (예약어)

 

 

 

(2) 타입

 

변수 타입은 string, number, boolean 등이 있다.

 

함수의 경우 return의 type을 미리 지정할 수 있다.

void가 아닌 경우는 반드시 return이 있어야 한다.

 

 

ECMAScript 에서 제공하는 template도 사용할 수 있다. type은 string으로 지정된다.

 

 

배열에서도 type을 지정하여 사용할 수 있다.

배열 선언 방법은 다음과 같다.

 

 

배열에서 tuple를 사용하면, 서로 다른 타입을 혼합해서 저장하는 배열을 만들 수도 있다.

이 때, 지정한 자리에는 반드시 해당 타입의 값만 들어갈 수 있다.

아래와 같이 작성한다면 해당 튜플의 첫번째 인자는 반드시 string, 두번째 인자는 반드시 number, 세번째 인자는 반드시 boolean 값이 들어가야 한다. 

 

 

TypeScript에서는 enum 변수도 사용할 수 있다.

사용법은 다음과 같다.

 

 

any라는 type도 지정할 수 있는데, 이 때는 기존의 JavaScript와 같이 어떤 변수든 사용할 수 있다.

그러나 초기값을 지정해주게 되면 아래와 같이 에러가 발생하게 된다.

이것을 추론 타이핑 ( Inferred Typing) 이라고 한다.

 

 

서로 다른 타입의 데이터를 저장하기 위해서는 type을 저장하기 위해서는 Type Assertion을 사용한다.

기본 규칙은 현재타입-> any -> 목적타입 순으로 설정한다.

 

<타입>변수 또는 변수 as 타입 형태로 사용한다.

다음과 같이 사용하면 된다.

 

 

반응형

'개발 언어 > TypeScript' 카테고리의 다른 글

06 TypeScript - Class  (0) 2018.04.06
05 TypeScript - interface  (0) 2018.04.06
04 TypeScript - union  (0) 2018.04.06
03 TypeScript - function  (0) 2018.04.05
01 TypeScript - 개념 및 환경설정  (0) 2018.04.05

댓글