[원티드 프리온보딩] TypeScript 2주차 - 2

leewol·2022년 9월 15일
0

프리온보딩

목록 보기
4/5

동적 타입과 정적 타입

타입 체커가 컴파일 타임에 수행되는지 런타임에 수행되는지 여부

  • 개발환경(타입체커) vs. 배포환경(컴파일러)
  • ts-loader vs. babel-loader
  • tsserver
  • tsc
  • 자바스크립트는 인터프리터 언어
    • 한줄 한줄 바로 실행, 동적 타입

정적 타입

  • 개발자가 타입을 명시적으로 타이핑 ex) Java, C#, C++
  • 타입 체커와 타입 추론을 통해 일부 타이핑 생략 가능 ex) TypeScript, Scala, Haskell
  • 보다 빠르게 오류 캐치 가능
    • 실행하지 않아도 컴파일러가 잡아냄
  • 자동 완성을 통해 데이터 타입 혹은 속성에 대한 확신 가질 수 있음

동적 타입

  • 런타임 상황에도 타입이 동등한지 확인

구조적 타입과 명목적 타입

타입스크립트가 타입을 이해하는 방법에 대한 이야기

구조적 타입 (Structural Type)

Duck Type, 타입의 상하 관계

  • 객체가 어떤 속성들을 가지는지 즉 구조를 기준으로 타입을 따짐
  • JavaScript
  • 사실 타입스크립트의 타입은 집합의 일부일 수 있다 (집합 관계를 따짐)
    • any가 모든 타입에 호환되는 이유는 언어 차원에서 만들어 준 백 터널이긴 하지만 최상위 타입이기 때문

명목적 타입 (Nominal Type)

  • 각 타입이 고유하다는 것 즉 동일한 타입이나 데이터가 있더라도 타입을 공유할 수 없다
  • 이름 기반으로 타입을 따짐
  • 작성한 타입이 런타임에 존재
  • C#, Java

덕 타이핑(Duck Typing)

타입스크립트의 타입 시스템은 구조적

  • 타입의 생김새가 오리와 같다며 오리의 타입
  • 거위가 오리와 같은 속성을 가지고 있다면 그것도 오리의 타입
  • 동적 타입 이야기를 할 때 언급됨
profile
간살간죽 개살개죽

0개의 댓글