아이템 28 : 유효한 상태만 표현하는 타입을 지향하기

function renderPage(state: State) {
	if (state.error) {}
	else if(state.isLoading) {}

	return {}
}

error와 isLoading이 둘 다 발생할 때에 대한 명확한 기준이 없다.

설계를 잘 해야 한다.

아이템 29 : 사용할 때는 너그럽게, 생성할 때는 엄격하게

함수의 매개변수는 타입의 범위가 넓어도 되지만, 결과를 반환할 때는 일반적으로 타입의 범위가 구체적이어야 한다.

즉, optional하게 여러 개의 데이터를 받을 수 있더라도, return값은 구체적으로 명시하는 것이 좋다.

ex) axios

<aside> ❓ return type이 여러개인 경우는 어떤 경우가 있을까?

</aside>

아이템 30 : 문서에 타입 정보를 쓰지 않기

주석과 코드의 불일치가 발생할 수 있어 주석에 타입을 작성하는 것을 가급적 지양해야 한다.

아이템 31 : 타입 주변에 null 값 배치하기