해결된 질문
작성
·
270
1
분배법칙의 작동방법 이해가 어려워 타입스크립트 교과서를 보던 중 모르는 부분이 생겨서 질문드립니다!
해당 내용은 타입스크립트 교과서 p.111에 있는 내용인데요
type R<T> = T extends string ? true : false;
type RR = R<never>;
이 코드의 설명 부분이 아래와 같이 되어 있습니다.
RR 타입이
true
가 아니라never
인 이유는T
가never
가 되면서 분배법칙이 일어났기 때문이다.
never
는 공집합과 같으므로 공집합에서 분배법칙을 실행하는 것은 아무것도 실행하지 않는 것과 같다.따라서 결과는
never
다.
설명이 잘 이해가 되지 않아 질문 드립니다!
분배법칙이 일어났다는 것은 never
가 never|never
로 유니언으로 분리되서 각각 타입검사를 하게 되는건가요?
그렇다면 never extends string ? true : false
가 되어서 분배 되어 각각 타입검사를 해서 true | true
가 되고 최종적으로 true
가 되어야하지 않나요?
공집합에서 분배법칙을 실행하는 것은 아무것도 실행하지 않는 것이라는 말이 무슨 말인지 잘 모르겠습니다..
답변 1
1
제네릭과 유니언이 만나면 분배법칙이 실행됩니다. never는 그 자체로 유니언이라서 분배법칙이 일어나나, never는 "공집합"이라서 분배할 게 없습니다. never는 그냥 never입니다. boolean같은 것이나 true | false로 쪼개지는 것이죠.
분배법칙에서는
never extends string 자체가 실행되지 않습니다. 그래서 그냥 never입니다.
그냥 편하게 never extends X 는 무조건 never라고 생각하셔도 됩니다.(never 자리가 제네릭인 경우)