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

세니·2024년 4월 7일

아이템 19 - 추론 가능한 타입을 사용해 장황한 코드 방지하기

만약 타입이 추론이 가능하다면 굳이 구문을 작성하지 않아도 된다.

비구조화 할당문은 모든 지역 변수의 타입이 추론이 가능하다.

타입 정보가 있는 라이브러리에서 콜백 함수의 매개변수 타입은 자동으로 추론된다.

app.get('/health', (request, response) => {} );
// request와 response의 타입을 정의하지 않아도 된다.

타입이 추론이 가능해도 명시하면 좋은 상황이 있다.
1. 객체 리터럴
2. 함수 반환

아이템 20 - 다른 타입에는 다른 변수 사용하기

자바스크립트에서는 한 변수를 다른 목적을 가지는 다른 타입으로 재사용이 가능하다.
하지만 타입스크립트에서는 오류가 발생한다.

변수의 값은 바뀔수 있지만 타입은 바뀌지 않는다

아이템 21 - 타입 넓히기

지정된 값을 가지고 할당 가능한 값들의 집합을 유추 - 타입 넓히기
상수를 사용해서 변수를 초기화 할때 타입 명시

타입스크립트의 기본 동작 재정의
1. 명시적 타입 구문 제공
2. 타입 체커에 추가적인 문맥 제공
3. const 단언문 사용 (변수 선언에 사용하는 let, const 아님)

아이템 22 - 타입 좁히기

타입 좁히는 방법
1. instanceof 사용
2. 명시적 '태그' 사용 - 태그된 유니온, 구별된 유니온, 사용자 정의 타입 가드

사용자 정의 타입 가드란, 타입스크립트가 타입을 식별하지 못한다면 식별을 돕기 위해 커스텀 함수를 도입하는 기법.

아이템 23 - 한꺼번에 객체 생성하기

객체를 생성할때는 속성을 하나씩 추가하기보다 여러 속성을 포함해서 한꺼번에 생성해야 타입 추론에 유리하다.

객체를 나눠서 만들어야 한다면 타입 단언문 (as)를 사용해야 타입 체커가 통과된다.

여러 객체를 조합해 큰 객체를 만들어야 할때 spread 연산자를 사용하면 만들 수 있다.

아이템 24 - 일관성 있는 별칭 사용하기

하나의 변수에 별칭을 남발해서 사용하면 제어 흐름 분석하기 어렵다.

아이템 25 - 비동기 코드에는 콜백 대신 async 함수 사용하기

callback hell을 해결하기 위해 es2015에 promise가 나왔다.

es2017에 async, await로 더 간단하게 해결할 수 있다.

타입스크립트는 타입에 관계없이 async, await를 사용할 수 있다.

  • 콜백보다 프로미스가 코드 작성이 쉽다.
  • 콜백보다 프로미스가 타입 추론이 쉽다.

async 함수는 항상 promise를 반환한다.

아이템 26 - 타입 추론에는 문맥이 어떻게 사용되는지 이해하기

문맥에서 값을 분리할때 튜플, 객체, 콜백에서 사용할때 주의해야 한다.

변수가 상수라면 as const를 사용해야 한다. (만약 오류가 난다면 사용한 곳에서 오류가 발생함.)

아이템 27 - 함수형 기법과 라이브러리로 타입 흐름 유지하기

타입 흐름을 개선하고 가독성을 높이기 위해 직접 구현보다는 내장된 함수형 기법과 lodash같은 라이브러리를 사용하면 좋다.

타입 정보가 잘 유지된다.

profile
세니는 무엇을 하고 있을까

0개의 댓글