• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

제네릭에 never가 들어올 때 분배법칙

23.12.16 13:20 작성 조회수 168

1

분배법칙의 작동방법 이해가 어려워 타입스크립트 교과서를 보던 중 모르는 부분이 생겨서 질문드립니다!
해당 내용은 타입스크립트 교과서 p.111에 있는 내용인데요

type R<T> = T extends string ? true : false;
type RR = R<never>; 

이 코드의 설명 부분이 아래와 같이 되어 있습니다.

RR 타입이 true가 아니라 never인 이유는 Tnever가 되면서 분배법칙이 일어났기 때문이다.

never는 공집합과 같으므로 공집합에서 분배법칙을 실행하는 것은 아무것도 실행하지 않는 것과 같다.

따라서 결과는 never다.

설명이 잘 이해가 되지 않아 질문 드립니다!

  1. 분배법칙이 일어났다는 것은 nevernever|never로 유니언으로 분리되서 각각 타입검사를 하게 되는건가요?

  2. 그렇다면 never extends string ? true : false 가 되어서 분배 되어 각각 타입검사를 해서 true | true 가 되고 최종적으로 true 가 되어야하지 않나요?

  3. 공집합에서 분배법칙을 실행하는 것은 아무것도 실행하지 않는 것이라는 말이 무슨 말인지 잘 모르겠습니다..

답변 1

답변을 작성해보세요.

1

  1. 제네릭과 유니언이 만나면 분배법칙이 실행됩니다. never는 그 자체로 유니언이라서 분배법칙이 일어나나, never는 "공집합"이라서 분배할 게 없습니다. never는 그냥 never입니다. boolean같은 것이나 true | false로 쪼개지는 것이죠.

  2. 분배법칙에서는

    never extends string 자체가 실행되지 않습니다. 그래서 그냥 never입니다.

  3. 그냥 편하게 never extends X 는 무조건 never라고 생각하셔도 됩니다.(never 자리가 제네릭인 경우)