본문 바로가기
Computer Science/Typescript

[ Typescript ] Typesctipt 내용 정리, 다양한 예제 실습

by 기억보다 기록을 2023. 4. 1.
반응형

Typescript

요즘 IT 기업들의 채용정보를 살펴보다 보면 상당수의 기업이 TypeScript를 원하거나 우대하는 것을 확인 할 수 있습니다. 면접준비를 하면서 Typescript 뭔지 왜 사용할지 정리해봤습니다.

 

 

 

타입스크립트는 자바스크립트에 타입을 부여한 언어입니다. 자바스크립트의 확장된 언어라고 볼 수 있습니다.
클라이언트 사이드와 서버 사이드를 위한 개발에 사용할 수 있으며 타입스크립트는 자바스크립트 엔진을 사용하면서 커다란 애플리케이션을 개발할 수 있게 설계된 언어라고 합니다. 타입스크립트에서 자신이 원하는 타입을 정의하고 프로그래밍을 하면 자바스크립트로 컴파일되어 실행할 수 있고 타입스크립트는 모든 운영 체제, 모든 브라우저, 모든 호스트에서 사용 가능한 오픈 소스입니다.

 

타입스크립트 장점

1. 오류 예방

타입스크립트는 타입을 부여하기 때문에 코드 작성 시에 알맞지 않은 타입을 넣거나, 혹은 타입을 넣지 않았을 경우 사전에 경고 뜹니다. 간단한 예시로 비교해보면
자바스크립트는 언제든지 a를 문자열이나 슷자, 조건 값으로 다시 정할 수 있고 아무 공고 없이 결과 잘 나오는 것을 확인할 수 있습니다.
index.js

let a = "Hello";
a = 10;
console.log(a);

결과: 10

처음에 a이란 변수는 String으로 저장했으며 다음 값이 Number으로 바꿨습니다.
이제 같은 코드를 타입스크립트로 작성해보고 실제로 어떤 결과 나올지 알아봅니다.
index.ts

let a:string = "Hello";
a = 10;
console.log(a);
처음에 a을 문자열로 선언합니다. a의 값을 슷자로 변경하게 되면 다음 오류가 발생합니다.
이처럼 TypeScript는 정적 타입을 지원하므로 컴파일 단계에서 오류를 포착할 수 있는 장점이 있습니다.
TSError: ⨯ Unable to compile TypeScript:
src/snippet1.ts:2:1 - error TS2322: Type 'number' is not assignable to type 'string'.

2 a = 10;
2. 실행 속도

자바스크립트로 실행시에 타입을 결정해서 적용된다며 이것은 컴퓨터에게 오류가 있는지 없는지 체크하라고 일을 맡겨버린 것과 같기 때문에 실행 속도가 당연히 오래 걸릴수 있습니다.
대신 타입스크립트는 '사람'이 코드 작성 시에 오류를 체크하고, 타입을 미리 결정하기 때문에 기계가 할 일을 덜어 실행 속도가 매우 빠르다는 장점이 있습니다.
3. 객체 지향 언어 스타일로 코드를 작성

타입 스크립트를 활용하면 객체 지향 언어 스타일로 코드를 작성할 수 있습니다. 자바스크립트가 처음 나왔을 때는 객체 지향의 기본이 되는 클래스가 없었습니다. 하지만 마치 객체 지향 언어처럼 객체를 생성하고 사용할 수 있었습니다. 다행히도 ES Next부터 Class가 도입되어 온전한 객체 지향 언어의 형태를 띠게 되었는데, 이때 타입 스크립트에서는 타입의 포맷을 지정하는 인터페이스, 가상 클래스 등의 객체 지향 언어에서 사용하는 문법들을 추가로 지원하면서 객체 지향 개발을 할 수 있도록 구성이 되어있습니다.
지금까지의 내용을 살펴보면, 타입 스크립트는 자바스크립트보다 너무도 매력적인 언어입니다. 하지만 타입 스크립트를 활용할 때 단점도 존재할 것입니다.

 

타입스크립트 단점

3. 더 많은 시간

타입 스크립트는 개발의 규모가 커지면 커질수록 타입 설정이 따로 필요하고 시간이 오래 걸릴 수 있다는 문제가 생길 수 있습니다. 타입 스크립트는 타입 강제화를 위해 코드에 타입을 지정해야 합니다. 타입 추론을 활용해서 자동으로 인식하게 만들 수 있지만, 배열, 객체, 함수의 경우 사용자가 타입을 선언해서 미리 제한해야 합니다. 이 과정에서 자바스크립트로 개발할 때 보다 시간이 더욱 소요될 수 있습니다.
2. 더 많은 코드

두 번째 단점으로는 코드의 가독성이 떨어질 수 있습니다. 타입스크립트는 모든 객체에 대해 타입을 지정해야 하며 만약 타입을 지정하지 않는다면, 타입을 추론해야 하는데, 타입을 추론하기 힘든 경우, 컴파일러에게 알려주는 형 변환을 하거나, 제네릭을 사용하여 어떤 타입이 들어오더라도 동작할 수 있도록 선언해야 합니다. 문제는, 이렇게 코드를 작성하다 보면 코드가 엄청 길어질 수 있는 문제가 있습니다.

 

 


 

 

 

반응형