TIL - 20230725(JS의 단점과 TS)

민태영·2023년 7월 25일

자바스크립트:

  • 웹페이지의 부드러운 동적인 효과를 주기 위해 만들어진 스크립트 언어
  • 구글은 자바스크립트의 성능을 높히기위해 V8엔진이라는 것을 개발 구글 크롬브라우저에 내장

노드:

  • V8엔진 기반의 플랫폼이 등장하면서 JS도 백엔드로 작성가능해짐

!노드의 잠재적 위험성:

  • 프론트엔드와는 달리 예외처리(에러처리)가 제대로 되지 않을 경우 서버가 다운(접속 불가상태)될수 있다.

!JS의 약점:

  1. 실행시 결정되는 변수타입: 개발자의 실수로 인한 오류가 발생하기 쉽고 찾기가 어려움
    -> 변수타입이 프로그램이 실행될때 결정되는 JS는 에러도 프로그램을 실행할 때 알려주기 때문
  2. 약한 타입체크: let/const 정도의 타입 키워드만 지원
    처음에 숫자타입을 너었다가 중간에 스트링타입으로 바꿀수도 있음
  3. 좋게 말하면 유연 나쁘게말하면 물렁한 객체
    const obj = { latitude: 11.5, longitude: 47.1 };
    const result = obj.latitude * obj.longitute; // 보통은 이런 실수는 컴파일러가 잡아줘야 되는데
    console.log(result) // NaN이라는 엉뚱한 값 출현!
  • 개발자가 임의로 객체의 성질을 수시로 변화 시킬수 있다.

  • 객체속성명이 오타가 나도 그대로 실행되어 없는 값으로 처리 해버린다.

타입스크립트

  • 위와 같은 약점을 보완하기 위해 등장
  • MS에서 개발한 오픈소스 프로그래밍언어

JS의 단점보완

  1. 실행시 변수타입이 결정 -> 실행전 컴파일 단계에서 변수의 타입을 체크
    컴파일이란

    : 실행되기전에 문법적인 오류를 체크하는 단계

예)

자바스크립트
function add(a, b) {
	return a + b;
}

const result = add(1, "2") <= 에러가 안뜸

result => "12" 문자타입으로 치환이 되버림
타입스크립트
function add(a, b) {
	return a + b;
}
const result = add(1, "2") <= 타입에러가 뜸
  1. 객체
  • 정의되지 않은 프로퍼티는 바로 에러메시지를 발생시킨다.
  1. 접근제한자를 사용가능
  • 접근가능성

아래의 Person클래스처럼 private로 캡슐화를 하면
외부에서 직접적으로 constructor에 접근할 수 없다.

 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: 집적적으로 변경하는것도 에러

console.log(spartan.age); // Error: 직접적으로 조회하는것도 에러
profile
꿈을 꾸는 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

유익한 글이었습니다.

답글 달기