티스토리 뷰
타입스크립트(TypeScript)란?
TypeScript는 JavaScript를 확장하여 만든 프로그래밍 언어이다.
⇒ 즉! JavaScript로 개발하다보니 에러나 가독성 등의 측면에서 불편해서 만들어진게 TypeScript!
2014년경에 Microsoft에 의해 개발・발표되었다.
TypeScript로 작성된 코드를 컴파일하면 JavaScript 코드로 변환이 된다.
그 때문에, JavaScript 파일을 실행할 수 있는 환경이라면 곧바로 사용할 수 있어,
JavaScript 라이브러리도 TypeScript에서 사용할 수 있는 등 호환성이 높은 것이 특징이다.
TypeScript는 규모가 큰 프로젝트처럼 많은 프로그래머들이 개발할 때, 오류를 방지하기 위해 설계가 되었다.
이외에도 변수의 데이터 형을 미리 정하는 것이나,
하나의 함수 정의로 다른 데이터형의 인수를 처리할 수 있는 것 등의 특징이 있다.
이러한 대규모 개발을 견딜 수 있는 사양으로 인해 2017년 Google이 사내 표준 개발 언어로 TypeScript를 채택하면서 수요가 확대되었다.
TypeScript는 국내에서도 향후의 보급이 예상되는 장래성이 높은 언어라고 할 수 있다.
■ TypeScript와 JavaScript의 차이
TypeScript는 JavaScript가 진화한 버전의 프로그래밍 언어다.
TypeScript와 JavaScript의 구체적인 차이점은 아래와 같다.
・JavaScript는 동적타이핑(Dynamic typing), TypeScript는 정적타이핑(static typing)
・TypeScript에서는 클래스를 작성할 수 있다.
・TypeScript에서는 JavaScript와 동일한 구문을 사용할 수 있다.
차이점1. 변수 타입(Type)
데이터형은 프로그램에서 다루어지는 데이터의 종류를 나타내는 용어로
JavaScript 코드에서는 실행 시 데이터형(type)이 자동으로 결정된다.
이 구조는 동적타이핑이라고 불리며 소스코드를 쉽게 작성이 가능하지만, 실행하지 않으면 오류(bug)를 알 수 없다는 단점이 있다.
+정보)다른 언어로 Ruby나 Phthon 등이 있다.
한편 TypeScript는 변수의 데이터형(type)을 미리 정할 수 있다.
이 구조는 정적타이핑이라고 불리며 컴파일을 하는 시점에서 에러를 알 수 있다.
변수의 데이터형을 미리 선언하기때문에 자바스크립트에서 모호하게 사용되는 데이터형을 제어할 수 있으므로
더 간편하게 에러를 해결할 수 있다.
+정보)다른 언어로 C# 등이 있다.
차이점2. 클래스(class) 작성 가능
클래스는 소스코드를 간결하게 기술하기 위한 구성으로 TypeScript 파일에서는 클래스를 쉽게 정의할 수 있다.
차이점3. TypeScript에서 JavaScript와 동일한 구문이 사용가능
TypeScript는 JavaScript의 기능을 확장해서 만들어졌기 때문에,
JavaScript의 구문을 사용할 수 있다.
■ TypeScript의 장점
・JavaScript보다 짧고 읽기 쉬운 코드 작성 가능
: TypeScript에서는 클래스를 작성할 수 있기 때문에 짧고 읽기 쉬운 코드를 쓸 수 있다.
동일한 기능을 구현하는 경우에는TypeScript쪽이 코드는 간결하다.
・ JavaScript와의 호환성
: TypeScript 에디터의 코드 보완 기능을 사용하면 좀 더 예쁘게 코드를 쓸 수 있다.
또한, TypeScript와 JavaScript는 호환이 돼서 JavaScript 개발 환경이 있으면 쉽게 도입이 가능하다.
이 때문에 JavaScript 파일을 TypeScript에서 호출하여 사용할 수도 있다.
・데이터형(type)을 선언하기 때문에 오류를 미연에 방지 가능
: TypeScript는 변수의 타입을 프로그램 코드 내에서 선언할 수 있어서 에러를 미연에 방지할 수 있다.
실행 전에 타입을 선언하기 때문에 동작이 빠른 것도 TypeScript의 장점이다.
아래의 예제를 확인하면 자바스크립트의 단점과 이 단점을 보완한 타입스크립트의 장점을 이해할 수 있다.
function sum(x, y)
{
return x + y;
}
위 함수를 정의한 개발자의 의도는 2개의 숫자 타입 인수를 전달받아 그 합계를 반환하려고 하는 것이다.
하지만 코드상으로는 어떤 타입의 인수를 전달해야하는지, 어떤 타입의 반환값을 반환해야하는지 명확하지 않다.
따라서 위 함수는 아래와 같이 호출 될 수도 있다.
function sum(x, y)
{
return x + y;
}
sum('a', 'b'); // 결과 값은 'ab'
위 코드는 자바스크립트 문법상 어떠한 문제도 없으므로 자바스크립트 엔진은 아무런 이의 제기 없이 위 코드를 실행한다.
이러한 상황이 발생하는 이유는 변수나 반환값의 타입을 사전에 지정하지 않는
자바스크립트의 동적타이핑(dynamic typing)에 의한 것이다.
위에서 작성한 스크립트를 타입스크립트의 정적 타입을 사용하여 다시 작성하면 아래와 같다.
function sum(x:number, y:number)
{
return x + y;
}
sum('a', 'b');
// error 발생 : TS2345: Argument of type '"x"' is not assignable to parameter of type 'number'.
TypeScript는 정적 타입을 지원하기 때문에 컴파일 단계에서 오류를 찾을 수 있는 장점이 있다.
명시적인 정적 타입 지정은 개발자의 의도를 명확하게 코드로 기술할 수 있기 때문에 코드의 가독성을 높이고 예측할 수 있으며 디버깅이 쉽다.
JavaScript 프레임워크와의 관계성
TypeScript로 애플리케이션을 만드는 경우 JavaScript 프레임워크와의 관계성을 아는 것이 중요하다.
프레임워크를 사용하면 애플리케이션을 효율적으로 개발할 수 있다.
프레임워크에 따라 정해진 설정파일을 수정하면 애플리케이션을 더 쉽게 만들 수 있다.
JavaScript 프레임워크에는 여러 종류가 있는데 주요 프레임워크 3개만 적어보자면 아래와 같다.
■ AngularJS
AngularJS는 Google에서 만들었다. TypeScript에서 개발이 권장되는 JavaScript 프레임워크이다.
다양한 동작 단말기로 움직이는 것이 특징이다.
페이지 수가 적은 Web 애플리케이션이나, 관리 화면계열의 애플리케이션을 만들 때 적합하다.
■ React
React는 Facebook에서 만든 JavaScript 프레임워크이다.
확장 기능을 사용하면 TypeScript에서도 사용할 수 있으나 별로 권장하지는 않는다.
유지보수가 쉽고 동작이 빠른 게 특징이다. UI나 싱글 페이지 애플리케이션의 개발에 적합하다.
■ Vue.js
Vue.js는 Evan You라는 사람이 만들었고, React와 마찬가지로 JavaScript 프레임워크이다.
다른 라이브러리와 조합하기 쉽다는 것이 특징이다.
간단하고 소규모인 애플리케이션부터 본격적인 개발까지 유연하게 대응할 수 있다.
▶ typeScript를 사용하는 이유 ◀
위에서 언급한 장점때문에 사용하지만 다시 한번 정리하자면
시스템의 규모가 커짐에 따라서 시스템의 복잡도가 증가하게 된다.
이럴 때 TypeScript(정적타이핑 : static typing)를 사용한다면 이러한 현상을 보완할 수 있다.
- 실행되기 전에 상당수의 오류를 발견할 수 있다. 즉, 빠른 오류(Bug) 발견이 가능하다.
- 컴파일러 및 코드 에디터가 코드를 실행하지 않더라도 프로그램에 대해 훨씬 더 많은 정보를 알 수 있다.
- 자바스크립트는 간단한 실수도 실제로 코드를 실행을 해야 발견할 수 있는 반면에,
타입스크립트는 실행전에 발견할 수 있어 안전하고 간편하게 코드를 작성할 수 있다.
즉, 에러를 사전에 미리 예방할 수 있다는 것이다.
'개발언어 > TypeScript' 카테고리의 다른 글
[JavaScript] 동기통신 vs 비동기통신 /xml vs json /Ajax 개념 및 jQuery Ajax vs Fetch vs axios에 대해서 (0) | 2022.06.21 |
---|---|
【JavaScript】Fetch API의 기초 (0) | 2022.04.28 |
【TypeScript】reduce (0) | 2021.10.29 |
Typescript 타입 (0) | 2021.05.11 |
- Total
- Today
- Yesterday
- EXCEPTION절
- DECLARE절
- 후나빙
- commit
- BEGIN절
- PL/SQL 예외처리문
- in/out/ref 차이점
- DBA_SYS_PRIVS
- 시간차이
- 동기통신
- VB.Net
- NLog
- 유틸리티
- REVOKE
- Oracle
- 초기화파라미터파일
- 유틸리티에러
- in/out/ref
- TrimEnd
- PL/SQL 실행문
- in/out/ref 공통점
- vba
- 참조전달
- C#
- rollback
- USER_SYS_PRIVS
- pl/sql
- in/out/ref 예제
- 에러
- grant
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |