팀에서 타입스크립트기반 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 를 설치하지 않은 경우 아래 링크 참조
그리고 IDE는 VS code를 준비한다.
참고자료
해당 글은 노마드코더 Typescript로 블록체인 만들기 강의를 듣고 정리한 내용입니다 :) 니꼬쌤 짱!!
'Frontend > Typescript' 카테고리의 다른 글
[Typescript] 타입스크립트 문법 추상클래스(abstract) & interface & type 차이 (0) | 2022.12.25 |
---|---|
[Typescript] 타입스크립트 문법 클래스, 추상클래스, 접근제어자, map (0) | 2022.12.24 |
[Typescript] 타입스크립트 문법 call signatures, overloading, generic (0) | 2022.12.24 |
[Typescript] 타입스크립트 문법 type, tuple, any, unknown ,never (0) | 2022.12.23 |
[Typescript] 타입스크립트 개념 & 변수 선언 (0) | 2022.12.23 |