❗️ TypeScript?
요즘 프론트엔드 채용공고를 보면 자격요건에 TypeScript가 적혀있는 것을 볼 수 있는데,
사용해본 적도 없고 어떤 장점이 있는지 궁금해졌다.
TypeScript = JavaScript + Type
즉, 자바스크립트에 타입을 더한 언어가 타입스크립트이다.
🤔 자바스크립트애서 5-'3'의 결과는 ?
결과는 2이다.
숫자에서 문자열을 뺐는데 숫자가 나올 뿐만 아니라, 어떠한 에러도 출력하지 않는다.
하지만 TypeScript에서 위의 코드를 실행시킨다면 오류가 발생한다.
TypeScript도 JS 기반 언어이지만 왜 다를까?
TypeScript에 대해 더 알아보자 !
❗️ JavaScript vs TypeScript
가장 큰 차이점은 당연히 타입이고 이 타입이 결정되는 시점이 다르다.
- 타입 결정 시점
JavaScript는 동적 타입 언어로, 변수의 타입이 런타임 중에 결정된다.
TypeScript는 정적 타입 언어로, 변수의 타입을 선언하여 컴파일 시 타입을 확인한다.
- 컴파일 여부
JavaScript는 컴파일이 필요없는 인터프리터 언어이기 때문에 런타임 중에 오류가 발견된다.
TypeScript는 컴파일 과정을 거쳐 JavaScript 파일로 변환되기 때문에 컴파일 중에 오류가 발견된다.
❗️ TypeScript 실행 과정
TypeScript 파일은 브라우저에서 읽지 못하기 때문에
TypeScript 파일을 JavaScript 파일로 컴파일 한 다음에, JavaScript 파일을 실행시킨다.
TypeScript 컴파일러를 설치하면 다음과 같은 방법으로 코드가 실행된다.
- TypeScript 컴파일러에 타입스크립트 코드를 입력
- TypeScript 코드를 추상 구문 트리(AST)로 변환
- 타입 검사기가 TypeScript 코드의 타입들이 잘 작성됐는지 안정성 검사 진행
- TypeScript AST가 JavaScript 코드로 변환
- 변환된 JavaScript 코드가 다시 JavaScript AST로 변환
- JavaScript AST가 바이트코드로 변환된 후, 프로그램 실행됨
❗️왜 TypeScript를 써야 할까?
- 에러 예방
타입 스크립트를 사용할 때, 알맞지 않은 타입을 지정하거나 타입을 지정하지 않으면 오류가 뜬다.
사전에 오류를 발견할 수 있게 되는 것이다.
- 자바스크립트 +알파
자바스크립트와 100% 호환되고, 이 외에 추가적인 기능(ex 인터페이스)을 제공한다.
자바스크립트의 단점을 줄여주면서 추가적인 기능이 생긴 셈이다.
🤔 TypeScript의 단점은?
- 컴파일 옵션이나 모듈 사용 설정 등 초기에 설정해줘야 할 것이 많다. (tsconfig.json 파일)
- 타입스크립트를 사용하기 위해서는 타입스크립트 문법을 배워야 한다.
- 자바스크립트보다 유연성이 떨어지기 때문에, 때로는 더 많은 코드를 작성해야 하고 이는 가독성을 저하시킬 수 있다.
❗️TypeScript의 Type
타입스크립트에서 타입이란 도대체 무엇일까?
변수나 함수를 정의할 때 사용하는 기본 타입들은 크게 12가지이다.
- string : 문자열
- number : 숫자
- boolean : true/false
- object : 객체. 타입스크립트에서는 주로 인터페이스나 타입 별칭을 씀.
- arrary : 배열
타입이 배열인 경우 number[] 또는 Array<number>와 같이 표시함. - tuple : 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열
let arr : [string, number] = ["hi" , 10] - enum : 특정 값들의 집합
- null
- undefined
- any : 모든 타입을 사용할 수 있음을 의미함
- void : 반환 값이 없는 함수의 반환 타입
- never : 절대 발생하지 않는 값을 의미
ex) 에러 핸들링 시, 함수의 끝에 도달하지 않을 때 사용
타입을 지정하는 방법은 변수 이름 뒤에 콜론(:)과 타입을 정의하는 타입 표기(Type Annotation)를 사용하면 된다.
let str : string
이제 str은 string이 아닌 다른 Type은 가질 수 없다.
또한 객체에도 Type을 설정해줄 수 있다.
type objectSetting = {
[key : string] : string
}
key와 value 자리에 string만 들어올 수 있게 되었다.
키 값으로 어떤 값이 들어올 지 모를 때 사용하는 방식이다.
또한 타입 별칭(type alias)을 지정해줄 수 있다.
type Car : {
model: string, brand: string, year: number
}
const car : Car = {
model: 'K9', brand:'KIA', year:2022
}
type이 길거나 복잡한 경우 또는 객체나 함수에 타입을 정의하는 경우에 유용하게 사용할 수 있다.
'WEB' 카테고리의 다른 글
SWC(Speedy Web Compiler) (1) | 2024.09.30 |
---|---|
Web Worker (0) | 2024.09.21 |
Virtual Dom (1) | 2024.09.04 |
Polling/Long-Polling/SSE/Web Socket (0) | 2024.08.27 |
Nginx (0) | 2024.08.21 |