팀에서 타입스크립트기반 nest.js로 서버를 구축하게 되면서 타입스크립트에 대한 스터디를 진행했다.

혹시나, 나처럼 속성으로 타입스크립트를 사용하게 될 분들에게 조금이나마 도움이 될까해서 요약 정리를 해본다.

 

타입스크립트가 생겨난 이유는 바로 자바스크립트의 단점 때문!

Javascript는 너~무 유연한 언어다.

우리가 생각하기에 이해가 안되는 언어랑 코드도 알아서 처리해버린다.

[1,2,3,4] 숫자 배열에 갑자기 false를 추가한다고 생각해보자.

다른 언어에서는 전혀 실행되지 않을 일이지만 자바스크립트는 지 맘대로!! 합친 후 String으로 변환해버린다.

Javascript는 개발자를 위해 에러를 발생시키지 않으려고 최선?을 다하지만 정작 우리가 원하는 바는 아니다.

이럴경우 이러면 안돼~! 라고 에러를 알려줘야 한다.

 

[1,2,3,4] + false
'1,2,3,4false'

 

메서드도 마찬가지다.

아래처럼 두 개의 값을 받아서 나누는 메서드를 구현했다고 치자. 

 

function divide(a,b) {
	return a/b
}

 

Javascript의 경우는 해당 함수를 호출해서 한 개의 값만 보내더라도

심지어 String 값을 보내더라도 에러를 내지 않는다. 그저 실행해버린다.

에러가 아닌 NaN 값을 리턴할 뿐이다!

 

// 이렇게 해야 정상
devide(2,3);
0.6666666666666666


// 숫자가 아닌 값을 보냈는데도 에러를 안 알려줘!!
devide("1234");
NaN


// 어떤 값도 넘기지 않아도 에러가 안난다..!
devide();
NaN

 

 

더 큰 문제는 런타임 에러가 발생하지 않는 다는 것이다.

다른 언어에서는 모두 컴파일되지 않고 실행조차 되지 않을 에러를 Javascript는 유저가

해당 메서드를 실행했을 때 보여준다ㅠㅠ!!

이렇게 되면 개발자도 모르는 버그를 가진채로 서비스가 유저에게 그대로 노출되는 셈이다.

// 이런 객체가 있다고 생각해보자.
const yunji = {name:"yunji"}



// 아래 hello는 없는 값이기 때문에 원래는 런타임에서 걸러져야 할 에러인데
// 자바스크립트는 얘를 실행한 시점에서야 오류를 알려준다ㅠㅠ!!
yunji.hello()
VM1646:1 Uncaught TypeError: yunji.hello is not a function
    at <anonymous>:1:7

 

위의 큰 단점을 모두 보완한 언어가 Typescript라고 할 수 있다.

 

 

개발환경

개발환경이라고 할 것도 없는 게

타입스크립트를 사용하기 위해서는 Node.js만 설치되어 있으면 된다!

혹시나 Node 를 설치하지 않은 경우 아래 링크 참조

Node.js 설치

 

그리고 IDE는 VS code를 준비한다.

VSCode 다운로드

 

 

참고자료

해당 글은 노마드코더 Typescript로 블록체인 만들기 강의를 듣고 정리한 내용입니다 :) 니꼬쌤 짱!!

 

+ Recent posts