TIL/TypeScript

[TypeScript] 이펙티브 타입스크립트 item 28~31

JoJobum 2022. 8. 3.

item 28

유효한 상태만 표현하는 타입 지향

유효한 상태와 무효한 상태를 둘다 표현하는 타입은 혼란을 초래하기 쉬움

// 유효한 상태와 무효한 상태를 둘다 표현하는 타입
interface State{
    a: string;
    b?: string;
    c?: string;
}
// 유효한 상태만 표현하게 바꾼 모습
interface StateCase1{
    a: string;
}

interface StateCase2{
    a: string;
    b: string;
}

interface StateCase3{
    a: string;
    c: string;
}

interface StateCase4{
    a: string;
    b: string;
    c: string;
}

type State =  StateCase1 | StateCase2 | StateCase3 | StateCase4

 

item 29

사용할 때는 너그럽게, 생성할 땐 엄격하게

== 매개변수의 타입은 넓어도 되지만 반환하는 타입은 구체적으로 하는 것이 좋음

 

 

item 30

타입 정보 문서에 쓰지 않기

주석은 코드와 연동되지도 않고, 컴파일러가 체크해주지도 않음 

굳이 주석에 달 필요 없음 

 

 

item 31

 

타입 주변에 null 값 배치하기

 

null과 null이 아닌 경우의 상태를 다루기 보다는

애초에 필요한 데이터가 모두 준비되었을 때 클래스를 만들도록 하는 것이 좋음 (어쩔 수 없는 경우면 ㄱㄱ)

 

strictNullChecks를 설정하면 null 값과 관련된 문제점 찾기 쉬워짐

반응형

댓글