CS | Dynamically Typed & Statically Typed / Runtime & Compile Time

kihyeon8949·2021년 2월 8일
0

CS

목록 보기
1/2

타입스크립트는 자바스크립트의 모든 기능을 포함하면서 정적 타입을 지원하는 언어라고 지난 포스팅에서 말했었다.=> Why TypeScript
이번 포스팅에서는 타입스트립트를 도입하여 동적타입(JS)에서 정적타입(TS)으로 바꾸었을때 어느 부분에서 이점을 얻는지 알아보자!

🌟 Dynamically Typed ⇨ Statically Typed

프로그래밍 언어는 여러 기준에 따라 그 종류가 나뉠 수 있지만 type이 결정되는 때에 따라 크게 두가지 종류가 있다.

  • ❗️Statically Programming Language ( 정적언어 )
    => Compile time에 type이 결정되고 type을 확인할 수 있다. type이 맞지않다면 가 난다.
  • ❗️Dynamically Programming Language ( 동적언어 )
    => type없이 변수를 선언하여 값을 지정할 수 있고, Runtime 때 type이 결정되고 확인할 수 있다. Runtime Error가 난다.

JavaScript 는 동적언어로 프로그램이 실행될 때 즉, Runtime때 타입이 결정되고 때문에 Runtime Error의 위험에 노출되어있다.때문에 개발 중 이슈를 잡아내지 못할 가능성으로 인해 사용자가 프로그램을 사용 중에 에러가 발생할 수 있다. 또한 코드에서는 type이 명시되어 있지 않기 때문에 가독성이 떨어진다.

반면, TypeScript 는 JavaScript에 type을 더하여 위의 문제들을 해결하였다. 정적 언어로 타입을 컴파일 시에 결정할 수 있고, 개발 중에 즉각적으로 error를 받아볼 수 있다. 덕분에 안정적이고 확장가능한 소프트웨어를 만들어 낼 수 있다. 또한 객체의 형태를 명시, 변수의 type명시, 함수라면 인자와 리턴값의 명시를 통해서 더 나은 가독성을 보장받을 수 있다.

✅ TypeScript가 정적타입 언어이기에 가지는 이점 (JS와 비교)

  • JavaScript
    - type이 Runtime에 결정됨 ⇨ Runtime error의 가능성 ↑ ⇨ 프로그램 실행 중 버그발생 가능성 ↑
    - type이 명시되지 않는다. ⇨가독성 떨어짐
  • TypeScript
    - type을 Compile time에 결정할 수 있음 ⇨ Runtime error 방지 ⇨ 버그 가능성을 낮춤
    - 가독성 ↑

💻 Compile time & Runtime ?

✏️ 런타임 (Run Time)

  • 프로그램이 실행되고 있을 때 존재하는 곳
  • 프로그래밍 언어가 구동되는 환경
런타임 환경: 컴퓨터가 실행되는 동안 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태/ 운영 체제 자체 에 속하는 경우도 있고 운영 체제에서 작동하는 소프트웨어 를 뜻하기도함
◦런타임 에러(Run Time Error) ?
  • 프로그램 실행 중(Runtime)에 발생하는 오류의 형태
  • 예외처리는 런타임 에러를 처리하도록 설계된 기능
    ex) 0 나누기 오류, 널(NULL) 참조 오류, 메모리 부족 오류

✏️ 컴파일 타임(Compile Time)

  • 컴파일 과정을 통해 컴퓨터가 인식할 수 있는 기계어 코드로 변환되어 실행 가능한 프로그램이 되는 과정
◦컴파일 타임 에러(Compile Time Error) ?
  • 소스코드가 컴파일 되는 과정 중에 발생하는 에러
  • 주로 문법 오류가 주를 이루며, 컴파일 에러 발생 시 문제가 되는 소스코드를 알려줌
    ex) Syntax Error, Type Check Error

💩 Compile time과 Runtime의 대표적인 오류 유형

컴파일타임런타임
Syntax error0 나누기 오류
Type check errornull 참조 오류
-메모리 부족 오류

참고자료 | TypeScript 하기 전에 이정도는 알아야지!
참고자료 | 런타임과 컴파일타임

profile
함께 일하고 싶은 개발자를 목표로 매일을 노력하고, 옷을 좋아하는 권기현 입니다.

0개의 댓글