Skip to content

이펙티브 타입스크립트 1장 요약 #15

@sbyeol3

Description

@sbyeol3

1장. 타입스크립트 알아보기

아이템 1. 타입스크립트와 자바스크립트의 관계 이해하기

타입스크립트는 문법적으로도 자바스크립트의 상위집합이다. 자바스크립트 프로그램에 문법 오류가 없다면, 유효한 타입스크립트 프로그램이라고 할 수 있다.

  • 문법의 유효성과 동작의 이슈는 독립적 문제
  • 타입스크립트 프로그램이지만 자바스크립트가 아닌 프로그램이 존재한다.
  • 타입스크립트 타입 시스템은 자바스크립트의 런타임 동작을 모델링한다.
  • 런타임 오류를 발생시키는 코드를 찾아내지만, 모든 런타임 오류를 찾아낼거라고 기대하지는 말자.

아이템 2. 타입스크립트 설정 이해하기

  • 가급적 설정 파일을 사용하는 것이 좋다.
  • noImplicitAny : 타입스크립트가 any로 추론을 가능하게 할 것인지, 설정 해제는 자바스크립트로 되어 있는 기존 프로젝트를 타입스크립트로 전환하는 상황에만 필요
  • strictNullChecks : nullundefined가 모든 타입에서 허용되는지 확인
    • "undefined는 객체가 아닙니다"와 같은 런타임 오류를 방지할 수 있다.

아이템 3. 코드 생성과 타입이 관계없음을 이해하기

타입스크립트 컴파일러의 역할

  1. 최신 타입스크립트/자바스크립트를 브라우저에서 동작할 수 있도록 구버전의 자바스크립트로 트랜스파일
  2. 코드의 타입오류 체크

➡️ 두 가지 역할은 서로 완벽히 독립적으로 이루어진다.

  • 컴파일은 타입 체크와 독립적으로 동작하므로 타입 오류가 있는 코드도 컴파일이 가능하다.
  • 타입스크립트의 타입은 '제거 가능'하다. 자바스크립트로 컴파일 되는 과정에서 모든 인터페이스, 타입, 타입 구문은 제거되어 버린다.
  • 타입스크립트에서는 런타임 타입과 선언된 타입이 맞지 않을 수 있다. 이 점을 항상 명심해야 한다.
  • 타입과 런타임의 동작이 무관하므로 함수 오버로딩은 불가능하다.

아이템 4. 구조적 타이핑에 익숙해지기

  • 자바스크립트는 본질적으로 덕 타이핑 기반.
  • 구조적 타이핑을 제대로 이해하면 오류인 경우와 오류가 아닌 경우의 차이를 알 수 있다.
  • 함수를 작성할 때, 호출에 사용되는 매개변수의 속성들이 매개변수의 타입에 선언된 속성만을 가질거라 생각하기 쉽지만, 타입은 열려있다. (= 타입의 확장에 열려 있다.)
  • 구조적 타이핑의 장점은 유닛 테스팅이 쉬워지고 라이브러리 간의 의존성을 완벽히 분리할 수 있다는 것이다.

아이템 5. any 타입 지양하기

  • 타입스크립트의 타입 시스템은 점진적이고 선택적이다.
  • any 타입에는 타입 안정성이 없다.
  • any는 함수 시그니처를 무시해 버린다. -> 약속된 입력과 출력의 타입을 어길 수 있다.
  • any 타입에는 언어 서비스가 적용되지 않는다.
  • any 타입은 코드 리팩토링 때 버그를 감춘다.
  • any는 타입 설계를 감춘다.
    • 깔끔하고 정확하교 명료한 코드 작성을 위해 제대로 된 타입 설계는 필수이다.
  • any는 타입시스템의 신뢰도를 떨어뜨린다. 타입체커를 신뢰하게 하자.

타입스크립트의 모토는 '확장 가능한 자바스크립트'이다.

👀 결론 : any를 사용하지 말자!

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions