JavaScript만 사용하며 개발을 진행하던 나날이 이어졌는데
TypeScript를 쓰시는 분을 보고, TypeScript와 JavaScript와의 차이점이 궁금해졌다.
따라서 둘의 차이점을 작성하고,
앞으로 상황에 맞는 언어를 쓰기 위해 이 글을 작성한다.
차이점
가장 큰 차이는 이름에서도 유추할 수 있듯이 type의 유무이다.
Java를 예로 들자면 변수 선언 시 변수 앞에 붙는 char int long String 같은 게
JavaScript는 없고, TypeScript는 있다는 것이다.
코드를 보면서 이해해보자.
// JavaScript
var a = 1
var b = 2
var c = a + b
위처럼 JavaScript는 변수를 선언할 때 자료형을 명시하지 않는다.
// TypeScript
var a: number = 1
var b: number = 2
var c: number
c = a + b
하지만 TypeScript는 'number'라는 자료형을 명시하였다.
기본적으로 타입스크립트로 할 수 있는 것은 자바스크립트로도 할 수 있고,
타입스크립트는 자바스크립트보다 익혀야 할 게 더 많은데 왜 타입스크립트를 사용할까?
TypeScript의 등장 이유
JavaScript는 속도가 빠르고 단순하다는 장점이 있지만,
이 장점이 단점이 되기도 했다.
ES6 이전 기준으로 자바스크립트는
코드를 최대한 실행하는 것이 원칙이기 때문에
문제가 될 수 있는 코드도 되도록 실행하는 단점이 있었다.
아래 예제들을 통해 살펴보자.
첫 번째 문제점
// 예제1
var name = "home"
console.log(name) // "home"
var name = "sleep"
console.log(name) // "sleep"
원래 변수라고 하는 것은 값을 구분하기 위해 사용되는 고유번호,
주민번호 같은 것이기 때문에 다시 선언할 수 없어야 한다.
그런데 위 예제를 보면 var은 변수를 다시 선언해도 아무런 에러가 뜨지 않는다.
위 코드를 ES6부터 등장한 let이나 const로 바꿔서 작성해보면 콘솔창에
Uncaught SyntaxError: Identifier 'name' has already been declared
라는 오류가 뜬다. 이게 정상적인 로직이다.
각각 언제 써야 할까?
참고
'Language > JavaScript + TypeScript' 카테고리의 다른 글
[JavaScript] 문서 객체 선택 및 조작 (0) | 2024.03.12 |
---|---|
[JavaScript] 문서 객체 모델 기본 용어 (0) | 2024.03.12 |
[JavaScript] 객체 (0) | 2024.03.12 |
[JavaScript] 함수 실행 우선순위 (0) | 2024.03.12 |
[JavaScript] 콜백 함수 (0) | 2024.03.09 |