Skip to content

이펙티브 타입스크립트 3장 #20

@Choozii

Description

@Choozii

19. 추론 가능한 타입을 사용해 장황한 코드를 방지

  • 타입스크립트가 타입을 추론 가능하다면 타입 구문을 작성하지 말라
  • 함수/메서드의 시그니처에는 타입 구문 적기, 함수 내부의 지역 변수에는 타입 구문을 적지 않기
    • 타입 구문을 최소화하고 코드를 읽는 사람이 구현 로직에 집중할 수 있게 하는 것이 좋음
  • 객체 리터럴과 함수 반환에는 타입을 명시하자 -> 정확한 위치에 오류가 표시됨

20. 다른 타입에는 다른 변수 사용하기

  • 변수의 값은 바뀔 수 있지만 타입은 일반적으로 바뀌지 않음
  • 타입이 다른 값을 다룰때에는 변수를 분리하는게 좋다.

21. 타입 넓히기

  • 타입스크립트가 상수의 타입을 추론할 때 '넓히기'를 사용함
    • ex. let x = 'x' 일 때, 타입스크립트는 x의 타입을 string으로 추론
  • const를 사용하면 더 좁은 타입으로 추론됨
    • const x = 'x'로 할당할 경우, x는 재할당될 수 없으므로 타입을 'x'로 추론
  • 값 뒤에 as const를 작성하면 타입스크립트는 최대한 좁은 타입으로 추론함

22. 타입 좁히기

  • if문으로 특정 타입의 데이터만 걸러내기
    • 객체에 존재하는 속성으로 체크
    • instanceof를 사용
    • Array.isArray 같은 내장 함수 사용
    • 타입에 명시적 태그를 추가하기 ex. interface UploadEvent {type : 'upload'; filename : string; contents : string; }

23. 객체 생성하기

  • 속성을 제각각 추가하지 말고 한꺼번에 객체로 만들기 -> 타입 추론에 유리
  • 객체를 생성할 때 객체 전개 연산자(...)를 활용
  • 제각각 나눠서 만들어야 한다면 as를 사용해 타입 체커를 통과하게 만들수 있음

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions