[배경지식] JavaScript? TypeScript? 이 둘의 차이는 무엇일까?

2022. 12. 31. 17:00·Development Study/Frontend
728x90

공통

객체 지향 프로그래밍 패러다임 = 데이터 추상화에 중심

- 객체와 클래스라는 두 주요 개념을 기반으로 한다

객체 기반의 스크립트 언어이다

웹의 동작을 구현하는 데에 쓰이는 언어이다

 

컴파일 타임?? 런타임??

소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output) -> 실행
[-----------------------------------------컴파일타임---------------------------][---------런타임---------------]

동적 타입 언어는 런타임 시에 자료형이 결정

-> 소스코드 작성 시 자료형을 먼저 지정해 줄 필요는 없다

정적 타입 언어는 컴파일 시에 자료형이 결정

-> 소스코드 작성 시 자료형을 먼저 지정 해야 한다


JavaScript

  • 동적 타입 언어이다
    • 런타임 속도는 빠르지만 안정성이 보장되지 않는다
  • 타입을 명시 할 필요가 없는 인터프리터 언어이다
  • 클라이언트 측 스크립팅 언어이다
  • 프로토타입 기반의 객체 지향 언어이다
  • 컴퓨터나 스마트폰 등에 포함된 대부분의 웹 브라우저에는 이 인터프리터가 내장되어 있다
  • 객체 지향형 프로그래밍과 함수형 프로그래밍을 모두 표현할 수 있다

TypeScript

  • 정적 타입 언어이다
    • 컴파일 시간이 걸리지만 안정성이 보장된다
    • 컴파일 단계에서 타입체크 -> 바로 버그를 캐치, 수정 -> 코드의 안정성 🆙
  • JavaScript기반 언어
  • 객체 지향 컴파일 언어
    • 전통적인 C계열의 컴파일 언어와는 차이가 있다
    • 브라우저에서 이해할 수 있도록 JavaScript코드로 변환하는 트랜스파일 언어라고도 불린다
  • 오픈소스 프로그래밍 언어, 넓은 호환성을 지니고 있다
  • 작동방식
    • TS -> compile(transpile) -> JS -> 실행
    • TS -> JS로 바뀔 때 helper 코드가 위아래로 추가되어 절대적인 코드의 양은 타입스크립트가 더 많다
    • 변환은 알아서 해주기에 문제되지 않는 부분이다
  • class와 interface의 특징을 지원함으로서 완전한 객체지향 프로그래밍 환경을 제공한다
  • javascript의 타입을 확장하고 타입 어노테이션을 이용해서 변수에 타입을 선언할 수 있게 한다
  • ES6에서 제공하는 모듈 선언과 모듈 호출 방식을 지원한다
  • MS에서 만든 언어답게 같은 회사에서 만든 vscode와의 궁합이 좋다
    • -> 개발환경 구축난이도 낮음
  • 조기 버그를 감지할 수 있다

코드 비교

// JavaScript
function plus(a, b){
	return a + b;
}
// TypeScript
function plus(a: number, b:number){
	return a + b;
}

TypeScript > JavaScript

  • 높은 가독성 - 타입 지정으로 인해 어떤 값이 들어가서 어떤 값이 출력되는지 알 수 있다
    • 사실 네이밍을 잘 하면 큰 문제가 되지는 않는다
  • 컴파일 에러를 잡기 쉽다
  • IDE(특히 VSCode)와의 결합성이 좋다
  • 팀원과의 협업에서 더 적은 설명으로 코드를 이해시킬 수 있다

JavaScript > TypeScript

  • 유연성이 높다 - 자료형을 바꿔가며 사용할 수 있다
    • TypeScript의 경우 이런 형식은 불가능하다
  • TypeScript에 비해 더 짧은 코드로도 같은 기능을 실행시킬 수 있다
    • -> 더 빠른 코딩이 가능하다

End

 

 

 

참고자료

더보기

https://choseongho93.tistory.com/319

 

TypeScript와 JavaScript의 개념 및 차이점

● Typescript란 ? : 타입스크립트는 마이크로소프트(MS)에서 개발하여 2012년10월에 첫 출시되었습니다. 오픈소스 프로그래밍 언어로 어떤 브라우저나 호스트, 운영체제에서도 동작합니다. 타입스크

choseongho93.tistory.com

https://velog.io/@pluviabc1/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%99%80-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

자바스크립트와 타입스크립트 차이점

JavaScript와 TypeScript TypeScript는 JavaScript 기반의 언어 JavaScript는 클라이언트 측 스크립팅 언어 TypeScript는 객체 지향 컴파일 언어 객체 지향 프로그래밍 패러다임은 데이터 추상화에 중심 객체와 클

velog.io

https://kid-dev.tistory.com/13

 

[typescript vs javascript] 어떤 언어를 써야할까? 이 글로 종결하자!

똘이는 javascript를 사용하는 유저이다. 인터넷을 검색해보니 typescript라는 검색어가 계속 눈에 들어온다. 그리고 주변 개발자들도 typescript를 사용한다는 소리를 듣곤 한다. 그리고 의문이 생겼다.

kid-dev.tistory.com

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Development Study > Frontend' 카테고리의 다른 글

[TypeScript] TypeScript Grammar - 01  (0) 2023.01.07
[TypeScript] Differences between .ts & .tsx  (0) 2023.01.07
[배경지식] CSS 프레임워크를 알아보자  (1) 2022.12.31
HTML + CSS 파일 연동하는 방법  (0) 2022.11.21
[HTML] 태그 정리 (<body> tag)  (0) 2022.11.20
'Development Study/Frontend' 카테고리의 다른 글
  • [TypeScript] Differences between .ts & .tsx
  • [배경지식] CSS 프레임워크를 알아보자
  • HTML + CSS 파일 연동하는 방법
  • [HTML] 태그 정리 (<body> tag)
ThreeLight
ThreeLight
ThreeLight Studio의 블로그, TimeMap.exe에 오신 것을 환영합니다.
  • ThreeLight
    TimeMap.exe
    ThreeLight
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Checkpoint (1)
      • (3D)Dev Deep Dive (0)
        • Templates & Guides (9)
        • Frontend origin (9)
        • Backend origin (1)
        • TroubleShootings (4)
      • Development Study (95)
        • Frontend (36)
        • Backend (21)
        • CS(Computer Science) (2)
        • Background Knowledges (11)
        • Algorithm (2)
        • Mobile (3)
        • AWS (6)
        • Python (6)
        • MSW(MapleStoryWorlds) (8)
      • Coding Test (59)
        • 문제.zip (1)
        • BaekJoon_JavaScript (0)
        • Programmers_JavaScript (9)
        • BaekJoon_Python (23)
        • Programmers_Python (10)
        • Undefined_Python (3)
        • Programmers_SQL (13)
      • 활동내역.zip (43)
        • 개인 (21)
        • Techeer (12)
        • Bootcamp (7)
        • Hackathon (1)
        • TeamProjects (2)
      • 여기 괜찮네??(사이트 | App) (5)
      • 재미있는 주제들 (8)
      • 개발 외 공부 저장소 (11)
        • 생산운영관리 (3)
        • 생활속의금융 (6)
        • 경영정보시스템 (2)
  • 링크

    • TimeMap.dmg (Portfolio)
    • GitHub 바로가기
    • 오픈프로필(카카오톡)
    • Medium 바로가기
    • Disquiet 바로가기
    • LinkedIn 바로가기
  • 인기 글

  • 태그

    react
    Python
    Baek Joon
    TypeScript
    programmers
    프로그래머스
    CSS
    SQL
    HTML
    JavaScript
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
ThreeLight
[배경지식] JavaScript? TypeScript? 이 둘의 차이는 무엇일까?
상단으로

티스토리툴바