TIL | TypeScript (JavaScript의 약점, TypeScript의 등장 ... )

·2023년 7월 25일

TIL # WIL

목록 보기
35/65

23.07.25

1. JavaScript의 약점

원래는 웹페이지가 정적 (ex. text, image, hyperlink …)이었는데
JS가 나옴으로써 웹페이지에 동적인 효과까지 줄 수 있게됨
그리고 이러한 JS의 성능을 높이고자 구글에서 V8 엔진을 만들었고, 크롬 브라우저에는 V8 엔진이 내장되어 있음

JS는 프론트엔드에서 사용하던 언어였는데
Node.js라는 플랫폼이 나옴으로써 JS를 백엔드에서도 사용할 수 있게됨

그런데 프론트엔드와 달리 백엔드는 단순한 에러 하나로 서버가 다운될 수 있음

그런데 다른 언어들과 달리 JS는 개발자가 실수를 저질렀다는 것을 프로그램을 실행할 때 알려줘서
1. 실행 시간(run time)에 결정되는 변수 (데이터)타입 (= 동적 바인딩) <-> 컴파일 시간에 성격이 결정됨 (= 정적 바인딩)
2. 약한 타입 체크 : 변수 선언시 let, const와 같이 변수/상수를 구분하는 정도의 키워드만 지원
3. 물렁물렁한 객체 : 객체의 성질을 수시로 변화시킬 수 있음

JS를 사용하는 Node.js는 그만큼 다른 언어를 사용하는 백엔드 플랫폼 ? 보다 오류가 잦을 수 있음

2. TypeScript의 등장

이러한 JS의 약점을 해결하기 위해 TS가 등장

  1. 실행 시간(run time)에 결정되는 변수 (데이터)타입 => 이제는 컴파일 시간에 변수의 타입을 체크 : ㅇㅇ 시그니처 ???
  2. 약한 타입 체크 => VS Code에 코드를 입력하는 순간 에러 메시지 발생
  3. 물렁물렁한 객체 : 객체의 성질을 수시로 변화시킬 수 있음 => VS Code에 코드를 입력하는 순간 에러 메시지 발생

1-6 TypeScript의 등장

타입스크립트를 사용하면 객체 지향 프로그래밍 (OOP) 을 할 때 JS에 비해 더 큰 메리트가 있음

(아니 근데
java는 객체 지향 언어이고
JS는 객체 지향 프로그래밍같은 느낌 ??????)

특히 JS에서는 아무나 속성에 접근할 수 있고 마음대로 속성의 값을 변경할 수 있는데 이렇게되면 오류가 날 수 있음
그러나 TS에서는

class Person {
private name: string;
private age: number; // age가 private인 것을 주목하세요!

constructor(name: string, age: number) {
this.name = name;
this.age = age;
}

public growOlder(): void {
this.age += 1;
}
}

const spartan = new Person('Spartan', 30);
spartan.age = 25; // Error: Property 'age' is private and only accessible within class 'Person'.
spartan.growOlder();
console.log(spartan.age); // Error: Property 'age' is private and only accessible within class 'Person'.

위 코드처럼 private과 public 등 (접근 제어자 사용이 가능해서 ????) 속성에 접근이나 값 변경을 함부로 하지 못함

그리고
d.ts 라는 확장자를 가진 선언 파일을 통해 외부 모듈 타입 정보를 제공할 수 있어서 JS 라이브러리도 안전하게 사용이 가능함

1-7 TypeScript 장점

  1. TS 개발자에 대한 수요 증가
  2. TS로 옮겨가는 흐름
  3. 생산성, 안전성 (안정성과 가독성이 높아져 개발 및 유지보수에서의 시간과 노력 절약 가능) 증가
  4. 줄어드는 테스트 코드

체크리스트

  • (1주차) 기존 순수 JavaScript로만 개발했을 때의 한계점과 TypeScript의 등장배경에 대해 설명할 수 있다.
  • (1주차) TypeScript로 개발하기 위해 반드시 필요한 세팅이 무엇이 있는지, 어떻게 해야 하는지에 대해 설명할 수 있다.
  • (2주차) TypeScript 컴파일러와 tsc의 개념에 대해 이야기 할 수 있다.
  • (2주차) .d.ts 파일의 역할과 사용 방법에 대해 설명할 수 있다.
  • (3주차) TypeScript에서 지원하는 기본 타입(boolean, number, string, 배열, 튜플, enum)을 활용하여 코드를 작성할 수 있다.
  • (3주차) 타입 안정성이 코드 품질에 어떻게 기여할 수 있는지를 설명할 수 있다.
  • (3주차) any, unknown, union을 이용하여 가변적 데이터 타입을 정의할 수 있다.
  • (3주차) 가변적 데이터 타입을 남발할 때 생기는 문제에 대해 설명할 수 있다.

1개의 댓글

comment-user-thumbnail
2023년 7월 26일

정리 진짜 잘되어 있네요 ~ 잘보고 갑니다

답글 달기