For the complete documentation index, see llms.txt. This page is also available as Markdown.

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