2021-09-25 TIL

til  · 1 min read

Facts

  • 인프런 타입스크립트 입문 강의를 완강하였다!

Feelings

  • 전에 리액트 프로젝트에서 타입스크립트를 사용하면서는 ts 언어를 제대로 이해하지 않은 채로 다른 코드를 붙여넣기하거나 모르는 키워드가 나오면 구글에 검색을 하면서 코딩했었는데 확실히 강의를 들으면서 ts 언어를 제대로 배우니까 왜 프로젝트에서 ts 언어를 사용하는 지를 알았다. 간단한 프로젝트에서는 js로 충분히 커버가 가능하지만 프로젝트 규모가 커질수록 ts를 사용해서 타입 체킹 기능을 추가하면 사전에 버그를 방지하고 유지보수 측면에서 등 굉장히 유용한 점이 많겠다고 느꼈다. 새로 배운 내용들을 프로젝트에 빨리 적용시켜보고 싶다.
  • 타입스크립트 입문 강의까지만 들으려고 했는데 강사님이 강의 마지막에 실전강의를 추천해주셨다. 들을까 말까 고민된다..

Findings

  • ts 타입 호환(Type Compatibility)

    • typescript 코드엥서 특정 타입이 다른 타입에 잘 맞는지를 의미
    • 구조적 타이핑

      • 타입이 같지 않아도 구조적으로 봤을때 오른쪽에 있는 타입이 더 컸을 때(왼쪽 타입의 속성을 전부다 가지고 더 많은 속성을 가질 때) 호환이 된다.
      • interface, class로 정의된 두 타입 사이에서도 내부적으로 존재하고 있는 속성과 속성에 대한 타입을 비교했을 때 오른쪽 타입이 구조적으로 더 크다면 왼쪽과 호환이 된다. til_1
    • 함수끼리의 호환 가능성

      • 내부 로직과 return type은 상관 없이 왼쪽 함수의 인자 타입들이 순서대로 오른쪽 함수 인자 타입에 앞에서부터 포함되는 경우에 호환이 가능하다. til_2

      • 인자 타입들이 순서가 다른 경우는 호환이 안 됨 til_3

        til_4

  • Best Common Type

    • 어떤 변수에 대한 타입이 몇 개의 표현식(코드)을 바탕으로 추론될 때 여러 표현식의 타입들로부터 ‘best common type’이 계산되어 변수의 타입이 추론된다.
    • 가장 근접한 타입 혹은 가장 근접한 타입을 추론하는 알고리즘
      til_5

    • 배열의 타입을 추론하기 위해 배열의 각 아이템을 살펴봄 → 3 choices: number, boolean, string → ‘best common type’ 알고리즘은 3개의 선택지를 다 고려하여 모든 타입 후보들과 호환될 수 있는 타입으로 추론 → (string | number | boolean)

Future Action Plans

  • 프론트엔드 개발환경 세팅 강의 수강 완료하기.
  • 타입스크립트 실전 강의 빠르게 수강 완료하기.