首页 > 其他分享 >[Typescript] 103. Hard - Tuple Filter

[Typescript] 103. Hard - Tuple Filter

时间:2022-11-16 02:33:05浏览次数:54  
标签:Typescript _____________ Tuple FilterOut Filter Expect 103 type

Implement a type FilterOut<T, F> that filters out items of the given type F from the tuple T.

For example,

type Filtered = FilterOut<[1, 2, null, 3], null> // [1, 2, 3]

 

/* _____________ Your Code Here _____________ */

type FilterOut<T extends any[], U, ACC extends any[] = []> = T extends [infer F, ...infer REST]
  ? [F] extends [U]
    ? FilterOut<REST, U, ACC>
    : FilterOut<REST, U, [...ACC, F]>
  : ACC;

/* _____________ Test Cases _____________ */
import type {Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<FilterOut<[], never>, []>>,
  Expect<Equal<FilterOut<[never], never>, []>>,
  Expect<Equal<FilterOut<['a', never], never>, ['a']>>,
  Expect<Equal<FilterOut<[1, never, 'a'], never>, [1, 'a']>>,
  Expect<Equal<FilterOut<[never, 1, 'a', undefined, false, null], never | null | undefined>, [1, 'a', false]>>,
  Expect<Equal<FilterOut<[number | null | undefined, never], never | null | undefined>, [number | null | undefined]>>,
]

 

标签:Typescript,_____________,Tuple,FilterOut,Filter,Expect,103,type
From: https://www.cnblogs.com/Answer1215/p/16894606.html

相关文章