05. Includes
이번 문제는 업데이트되면서 난이도가 상승했다. 업데이트 이전으로 작성한다.
문제
// expected to be `false`
type isPillarMen = Includes<['Kars', 'Esidisi', 'Wamuu', 'Santana'], 'Dio'>해설
type Includes<T, U> = never;
// 1. T 가 배열이어야한다.
type Includes<T extends unknown[], U> = never;
// 2. U가 T를 extends 하는지 확인한다. 이렇게 하면 에러가 발생한다.
type Includes<T extends uknown[], U> = U extends T ? true : false;
// 3. 왜 에러가 발생하는 걸까? 이유는 간단하다.
// U extends T 를 사용하면 U가 배열이어야한다 하지만 우리는 배열이 아닌 값 자체다.
// 어떻게 해야할까? 간단하다. T를 union으로 만들면 된다.
// 어떻게? indexed access를 사용해서!
type Includes<T extends unknown[], U> = U extends T[number] ? true : false;참고링크
Last updated