TypeScript

[TS] TypeScript 왜 배워야 할까?

_doit 2024. 9. 6. 19:09
728x90
반응형

Node.js의 등장가 등장하면서 JavaScript로 프론트엔드뿐만 아니라 백엔드까지 모두 개발할 수 있게 되었죠. 

하지만, 우리는 잊고 있었죠. JavaScript는 동적 타입 언어였다는 것을..

다들 한 번쯤 알 수 없는 “undefined” 에러를 보며 스트레스를 받은 기억이 있지 않나요?

[JavaScript의 단점]

☑️ 실행 중에만 에러를 알 수 있어요
JavaScript는 프로그램이 실행되는 동안에만 오류를 찾아요. 즉, 프로그램을 코딩할 때는 잘못된 부분이 있는지 모르고, 실행을 해봐야만 에러가 발생하는 것을 알 수 있어요. 이 때문에, 개발 중에 실수한 부분을 빨리 잡기 어렵죠. 예를 들어, 숫자 값을 다루는 함수에서 문자열이 들어가면 이상한 결과가 나와버리기도 해요.

 

☑️ 약한 타입 체크
JavaScript에서는 변수에 어떤 타입의 값이 들어가도 문제가 되지 않아요. 숫자를 넣었다가 나중에 문자열로 바꿔도 별다른 경고가 없어요. 이런 유연성 덕분에 쉽게 코드를 작성할 수 있지만, 실수로 잘못된 데이터를 넣으면 오류가 발생할 가능성이 높아요.

 

☑️ 객체의 유연함

const obj = { latitude: 11.5, longitude: 47.1 };
const result = obj.latitude * obj.longitute; // 보통은 이런 실수는 컴파일러가 잡아줘야 되는데
console.log(result) // NaN이라는 엉뚱한 값 출현!


JavaScript의 객체는 너무 유연해서 프로그래머가 실수로 잘못된 데이터를 넣거나 조작할 수 있어요. 예를 들어, GPS 좌표를 담은 객체에서 'latitude'와 'longitude'라는 값을 다루다가 오타로 'longitute'라고 쓰면, 프로그램은 이걸 미리 잡아내지 못하고 실행 후에야 문제가 발생해요.

이런 문제들이 쌓이면서, JavaScript로 대규모 프로젝트를 개발할 때 안정성을 보장하기가 어려웠어요. 이를 해결하기 위해 등장한 것이 바로 TypeScript에요.

 

[TypeScript의 등장]

TypeScriptMicrosoft에서 만든 프로그래밍 언어로, JavaScript의 단점을 보완하기 위해 만들어졌어요. TypeScript는 JavaScript에 정적 타입 기능을 추가했어요. 즉, 프로그램이 실행되기 전에 코드를 확인하고 잘못된 부분을 미리 알려주는 거죠.

 

☑️ 컴파일 시간에 오류 체크
TypeScript는 코드를 작성하는 순간부터 오류를 체크해줘요. 코딩을 하면서 잘못된 부분을 바로 잡을 수 있어서, 실행 중에 발생하는 에러를 크게 줄일 수 있어요.

 

☑️ 강한 타입 체크
TypeScript는 변수에 정확한 타입을 정해주기 때문에, 숫자는 숫자로, 문자열은 문자열로만 다루게 해줘요. 이 덕분에 실수로 타입을 잘못 입력하는 문제를 방지할 수 있어요.

 

☑️ 안전한 객체 사용
TypeScript는 객체의 속성도 잘못 사용하지 않도록 도와줘요. 객체의 속성 이름을 잘못 입력하면 코드를 작성하는 중에 바로 오류를 알려주기 때문에, 실행 전에 문제를 미리 해결할 수 있어요.

 

TypeScript의 매력은 이게 끝이 아닙니다!

 

☑️ 객체 지향 프로그래밍 지원

TypeScript는 객체 지향 프로그래밍(OOP) 개념을 강력하게 지원해요. 클래스 내부의 프로퍼티에 접근을 제한하는 기능이 있어, 외부에서 잘못된 값을 수정하는 것을 방지할 수 있어요.

  •  기존 JavaScript 객체 지향 프로그래밍 예시
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

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

const spartan = new Person('dudu', 30);
spartan.age = 25; // 외부에서 age 속성을 마음대로 조작할 수 있어요! 뜻밖에 회춘?
spartan.growOlder();
console.log(spartan.age); // 결국 1살을 더 먹었지만 dudu는 26세

 

  • TypeScript 객체 지향 프로그래밍 예시
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('dudu', 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'.

 

 

[TypeScript를 배우면 할 수 있는 것]

☑️ TypeScript는 개발자 취업 시장에서 이제는 필수적인 기술 스택이 되었어요.

☑️ 더 높아지는 생산성 & 안정성

☑️ 정적 타입 시스템, 객체 지향 프로그래밍, 디자인 패턴 등 다양한 고급 프로그래밍 개념들을 학습할 수 있어요.

☑️ 줄어드는 테스트 코드: TypeScript는 JavaScript에 비해 테스트 코드보다 비지니스 로직 작성에 집중할 수 있게 해줘요!

 

 

끝!!

 

728x90
반응형