Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
sbyeol3 opened this issue Sep 18, 2022 · 0 comments
Open

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

sbyeol3 opened this issue Sep 18, 2022 · 0 comments
Assignees

Comments

@sbyeol3
Copy link
Collaborator

sbyeol3 commented Sep 18, 2022

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant