R2의 경우에는 Depth2입니다. 이때는 다음과 같은 표가 만들어집니다.

    ▼ 표 3-2 R2의 경우 Depth별 결괏값 정리

    Depth

    Arr

    Depth extends -1

    InnerArr 또는 Arr

    2

    (number | (number | number[])[])[]

    false

    InnerArr = number | (number | number[])[]

    1

    (number | number[])[])

    false

    InnerArr = number | number[]

    0

    number | number[]

    false

    InnerArr = number

    -1

    number

    true

    Arr = number

    R2의 타입은 number[]입니다. flat 메서드는 FlatArray<A, D>[]이므로 마지막에 []를 붙여야 합니다.

    flat 같은 타입을 스스로 만드는 것은 매우 어렵습니다. 특히 Depth1 낮추기 위해 인덱스 접근 타입을 사용하는 것은 쉽게 상상하기 힘듭니다. 하지만 직접 타입을 만들지는 못하더라도 만들어진 타입을 보고 왜 이런 결과물이 나오는지 분석할 수는 있어야 합니다. 한 번에 이해하기 힘들겠지만 차근차근 한 단계씩 밟아나가며 분석해보세요. 인덱스 접근 타입이나 분배법칙 같은 개념이 아직 생소하다면 2장으로 돌아가서 복습하는 것이 좋습니다.

    flat 메서드에 대한 분석이 완벽하게 이해되었을 때 다음 절로 이동하세요.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.