(1) 타입( Type )
Github: https://github.com/SHIN96BC/JavaScript-TypeScript-Concept-2022/tree/main/03_Type
1) javaScript
<1> 자바스크립트는 타입을 굉장히 느슨하게 관리한다. ( 아무런 제약이 없다. )
<2> 자바스크립트의 변수 타입은 데이터가 들어갈때마다 바뀐다.
ex)
function addAge1(age) {
return age + 1;
}
let age1 = addAge1(30);
age1 = addAge1('30');
age1 = 10;
age1 = [];
age1 = false;
age1 = {};
<3> 자바스크립트의 이런 느슨함은 한편으로는 편리하지만, 한편으로는
큰 불안정성이라고도 할 수 있다.
<4> 위의 예시처럼 1 을 더해서 반환하는 함수를 작성했는데 인자값으로 문자열을 주게되면
작성자가 원하는 결과와는 다른 결과가 나오게되면서 이 함수의 목적이 모두 허물어지게 된다.
<5> 즉, 버그를 굉장히 쉽게 만들 수 있는 언어 환경이라고도 할 수 있다.
<6> 그래서 자바스크립트 개발자들은 이런 버그를 없애고 안전하게 동작하는 코드를 만들기 위해서
방어코드를 끊임없이 작성해야 된다.
<7> 자바스크립트는 런타임에서 에러가 발생하기 때문에 에러처리가 굉장히 힘들다.
2) typeScript
<1> 타입스크립트는 타입을 굉장히 엄격하게 관리한다.
<2> 타입스크립트는 변수 선언시에 미리 타입을 명시한다.
ex)
function addAge2(age: number): number {
return age + 1;
}
let age2: number = addAge1(30);
// let age2: number = addAge1('30'); // 컴파일 에러 발생
// age2 = '30'; // 컴파일 에러 발생
<3> 타입 관리가 엄격해서 불편할 수 있지만, 굉장히 안정적인 코드를 작성할 수 있게된다.
<4> 타입스크립트는 컴파일타임에 개발자가 실수로 지정해둔 타입과 다른타입의 데이터를 넣게되면
컴파일 에러를 발생시켜서 알려주기 때문에 버그를 미리 방지할 수 있다.
'JS > JavaScript&TypeScript' 카테고리의 다른 글
JavaScript&TypeScript 06. 참조&복사 (0) | 2022.04.02 |
---|---|
JavaScript&TypeScript 05. 식 ( Expression ) (0) | 2022.04.02 |
JavaScript&TypeScript 04. 변수&상수 (0) | 2022.04.02 |
JavaScript&TypeScript 02. 값 ( Value ) (0) | 2022.04.02 |
JavaScript&TypeScript 01. 식별자 ( Identifier ) (0) | 2022.04.02 |