<TypeScript> 무엇이 TS를 TS답게 하는가?

·2023년 6월 28일
0

TypeScript

목록 보기
1/8
post-thumbnail

무엇이 TS를 TS답게 하는가?

TypeScript

왜 사용하는가?

  • 컴파일 단계에서 오류를 잡아준다.
  • 리팩토링을 쉽게 해줄 수 있다.
  • 코드 작성을 편하게 해준다.

어떻게 편리하게 만들어줄 수 있는가?

  • 컴파일 단계에서 어떻게 오류를 잡아주는가?
  • 리팩토링을 어떻게 쉬워지게 해주는가?
  • 코드작성을 편하게 어떻게 만들어주는가?

TS가 이러한 이점을 주는지 생각하지 않고 쓴다면, 무슨 의미가 있을까..

권장되는 타입스크립트 코드 작성

  1. anystring 타입을 지나치게 사용하지 않는다.
  2. enum 대신 문자열과 매직 넘버를 사용하지 않는다.
  3. 같은 구조의 인터페이스를 별도로 선언하지 않는다.
  4. JS에서 사용하면 패턴을 TS에서 사용하지 않는다.

IDE 권장 설정

vsCode - 설정 - lens typescript ➡️

typeScript › Implementations Code Lens: Enabled
typeScript › References Code Lens: Enabled
typeScript › References Code Lens: Show On All Functions

체크가 안되어 있다면, 체크한다.

Enum과 구조체 정의

  • string을 몰아내자.
    ➡️ Why? : 오타로 인한 오류 발생 가능성 높음.
    - 제너릭을 사용하자.
    - 구조체의 필드명을 타입으로 사용할 수 있다.
    - enum을 구조체의 필드명으로 사용할 수 있다.

  • 파생된 구조체 만들기
    - Pick, Omit, Partial, Nullable 등..

  • 서로 관련되지 않은 정의를 한 곳에 모아두지 않기.
    ➡️ Why? : 수정과 삭제하는데 어려움.
    - 사용하지 않는데 남아있는 선언은 네임스페이스를 더럽히므로 언젠가 문제가 된다.

Interface

  • JS에는 인터페이스가 없다.
    - 타입 참조도 참조다. 참조는 곧 의존성이다.
    - JS에서는 인터페이스 없이 의존성 역전이 가능하지만, TS에서는 인터페이스가 있어야 한다.

  • JS에는 메서드 오버로딩이 없다.
    - TS에서도 못 한다.
    - 인터페이스는 제공하지만, JS의 가변 인자로 구현해야 한다.

타입 캐스팅

  • 타입 캐스팅을 할 때는 변수나 타입을 선언하자.
    - 타입 캐스팅(as)을 할 때는 괄호로 감싸지 말고 변수를 선언하자.
    - 제네릭을 사용할 때마다 인자를 입력하지 말고, 미리 제네릭이 포함된 타입 선언을 하자.

정리

  • 무조건 코드를 짧게 쓰는 것도, 무조건 타입을 추가하는 것도 능사가 아님.
  • 최대한으로 코드의 변경을 추적하고, IDE의 도움을 얻기 위해 노력해야한다.
  • 타입을 선언하고, 사용할 때는 이것이 코드 추적에 어떤 도움을 줄까 생각해보기.
    여기에 쏟은 노력과 시간은 더 큰 이득으로 되돌아올 것이 분명함.
profile
- 배움에는 끝이 없다.

0개의 댓글