ts-book
ts-book copied to clipboard
[p.206, 제안] 2번째 예제코드 is never 사용 시 예외사항
is never로 콜백함수 반환값 타입을 좁힐 경우, 콜백함수가 true/false 중 어떤 것을 반환해도 동일하게 never[] 타입 never 타입 자체가 반환값이 없다는 의미이기 때문에 true/false 관계없이 never로 타입이 좁혀지는 것이라고 이해했습니다.
const r2 = [1, 2, 3].myFilter((v, i, a): v is never => false); // 예제코드 타입 -> never[]
const r2 = [1, 2, 3].myFilter((v, i, a): v is never => true); // 콜백함수 리턴값 변경 후 타입 -> never[]
다만, p.153 마지막 줄에 '반환값이 true일 때 매개변수의 타입도 is 뒤에 적은 타입으로 좁혀집니다.'라고 설명되어 있습니다. is never로 사용될 경우 예외적으로 항상 never로 타입이 결정된다는 설명이 추가되면 좋을 것 같습니다.