티스토리 뷰

TypeScript

TypeScript를 쓰는 이유

totopark0 2021. 5. 19. 22:30

TypeScript의 존재 목적


흔히 TypeScript는 JavaScript의 superset이라고 한다. 말하자면, JavaScript를 확장시켜 만든 언어라는 것이다.

그렇다면 어떤 목적으로 JS를 확장시켜 다시 언어를 만들었을까? 이는 바로 동적언어인 JS가 가지는 문제점을 보완하기

위해 만들어진 것이다. 그렇다면 동적언어로써 JS는 어떤 문제를 가지고 있으며, 타입스크립트가 어떻게 이를 해결해줄까?

이는 아래와 같다.

 

 

  • Type Error 방지 (안정성 향상)
  • API, 함수 자동완성 (개발 편리성 향상)

 

 

Type Error 방지 (안정성 향상)


 

 

아래의 예시를 보자.

 

int num = 0 // 성공
boolean flag = 2 // 실패
float temp = 3 // 실패

 

 

정적 언어인  C++ 의 변수 선언

 

위는 정적 언어인 C 에서 타입별로 변수를 선언한 것이다. 보다시피, 변수 타입인 int(정수), boolean(부울), float(실수)를 정의하고 이에 맞는 데이터 값을 지정해야 한다. 이를 맞추지 못하면, Type Error가 발생한다. 사실, Enterprise Level이 아닌 이상 이러한 부분들은 수고스럽게 맞춰야 하는 문법에 가깝다. 그렇다면 번거로운 데이터 타입을 맞출 필요가 없는 동적언어를 살펴보자.

 

const number = 10;  // 정수형으로 인식
const name = "Arthur Park"; // 문자열로 인식

 

 동적 언어인 JavaScript의 변수 선언

 

아주 편리하다. 어떻게 바뀔지도 모르는 데이터형을 미리 선언할 필요도 없다. 알아서 데이터 형을 알아먹는다. 배우기도 매우 편리하다.

그러나, 동적언어가 가지는 가장 큰 약점이 있는데, 이는 함수에 잘못된 데이터 형을 넣어도 코드 작성시에 알지 못하고 컴파일 후에, 혹은 컴파일 후에도 명확히 나타나지 않아서 버그의 원인이 Type Error 인지도 모르고 코드 전체를 뒤적이게 될것이다. 아래를 참고하자.

 

function sum(a,b){
    return a + b;  // 더하기 연산자로 더하기
}

sum('10','20'); // 글자와 글자를 서로 더한다??
                // 그러나 오류 발생 X

잘못된 데이터형에 오류가 없는 JavaScript

 

그렇다면 똑같은 내용을 타입스크립트로 바꾸면 어떠할까? 

             

      number 사용 함수인데, 왜 문자열을 넣냐고 하는 타입스크립트

 

보다시피 타입스크립트는 매개변수란에 타입형이 강제되는 문법을 가지고 있기 때문에, 함수 호출부 작성시에 데이터형이 서로 상이 하면 이를 사전에 오류로 알려주게 된다. 이를 통해 코드는 한층 안정적이게 된다. 그리고 안정성은 여러사람이 협업하는 Enterprise level에서 아주 중요한 문제이기 때문에 많은 회사들이 타입스크립트를 도입하고 있다. 우리가 사용하는 모든 소프트웨어 서비스는 많은 사람이 협업해서 만든것이 대다수 이기때문에, 이를 배워놓으면 매우 유용할 것이다.

 

API, 함수 자동완성 (개발 편리성 향상)


데이터 타입을 미리 선언해주는 타입스크립트는 모든 변수의 데이터 타입을 인지하고 있기 때문에 특정 변수가 사용가능한 API, 함수를 자동완성해주어 개발자의 편의를 돕기도 한다.

Number 자료형 인지후, 사용가능한 API 리스팅

위와 같이 사용가능한 API를 추천해주는것은 타입을 미리 정의하는 정적 언어이기 때문에 가지는 강력한 장점이다. 이러한 장점은 편리할 뿐만아니라, 위와 같이 Camel Case로 이루어진 API는 자동완성이 없으면 오탈자를 발생시키가 매우 쉽다. 실제로 JavaScript는 위와 같이 자동완성이 뜨지 않기 때문에, 일일히 다 쳐야 하는데 가물가물하면 구글에 검색을 해봐야 하고, 잘 알더라도 Camel Case 때문에 오탈자를 내면 또 다시 알수없는 오류로 시간 낭비를 하게 된다. 

 

사소해 보여도 이러한 장점이 프로그래밍에서는 매우 크다고 생각한다. 이렇게 정적언어를 쓰면 에러가 떠도 Logic 쪽만 살펴보면 되니까 훨씬 비용도 덜 들것이다. 잘 배워놓으면 유용하게 쓸수 있을거 같다.

 

다른거 할거도 많은데, 일단 언어부터 빨리 떼고 이 언어로 여러가지를 해봐야겠다.

'TypeScript' 카테고리의 다른 글

TypeScript의 변수와 함수  (4) 2021.05.20
개발 환경  (2) 2021.05.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday