05. Includes

이번 문제는 업데이트되면서 난이도가 상승했다. 업데이트 이전으로 작성한다.

문제

해설

문제

Implement the JavaScript Array.includes function in the type system. A type takes the two arguments. The output should be a boolean true or false. For example:

// 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