• [Typescript Challenges] 10. Medium Include


    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:

    type isPillarMen = Includes<['Kars', 'Esidisi', 'Wamuu', 'Santana'], 'Dio'> // expected to be `false`
    /* _____________ Your Code Here _____________ */
    type IsEqual<T, U> =
    	(<V>(x: V) => V extends T ? 1 : 2) extends
    	(<V>(x: V) => V extends U ? 1 : 2)
    		? true
    		: false;
        
    type Includes<T extends readonly any[], U> =
      T extends [infer First, ...infer Rest]
        ? IsEqual<First, U> extends true ? true : Includes<Rest, U>
        : false;
    
    /* _____________ Test Cases _____________ */
    import type { Equal, Expect } from '@type-challenges/utils'
    
    type cases = [
      Expect<Equal<Includes<['Kars', 'Esidisi', 'Wamuu', 'Santana'], 'Kars'>, true>>,
      Expect<Equal<Includes<['Kars', 'Esidisi', 'Wamuu', 'Santana'], 'Dio'>, false>>,
      Expect<Equal<Includes<[1, 2, 3, 5, 6, 7], 7>, true>>,
      Expect<Equal<Includes<[1, 2, 3, 5, 6, 7], 4>, false>>,
      Expect<Equal<Includes<[1, 2, 3], 2>, true>>,
      Expect<Equal<Includes<[1, 2, 3], 1>, true>>,
      Expect<Equal<Includes<[{}], { a: 'A' }>, false>>,
      Expect<Equal<Includes<[boolean, 2, 3, 5, 6, 7], false>, false>>,
      Expect<Equal<Includes<[true, 2, 3, 5, 6, 7], boolean>, false>>,
      Expect<Equal<Includes<[false, 2, 3, 5, 6, 7], false>, true>>,
      Expect<Equal<Includes<[{ a: 'A' }], { readonly a: 'A' }>, false>>,
      Expect<Equal<Includes<[{ readonly a: 'A' }], { a: 'A' }>, false>>,
      Expect<Equal<Includes<[1], 1 | 2>, false>>,
      Expect<Equal<Includes<[1 | 2], 1>, false>>,
      Expect<Equal<Includes<[null], undefined>, false>>,
      Expect<Equal<Includes<[undefined], null>, false>>,
    ]
  • 相关阅读:
    深度学习100问
    BAT机器学习面试1000题系列
    深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
    深入理解卷积层
    AI大道理头尾标识
    git-svn Manual Page
    收藏夹
    C语言 #、##、#@在#define中的用法
    ubuntu 编译安装自己的git-svn
    ALSA参考文档
  • 原文地址:https://www.cnblogs.com/Answer1215/p/16651131.html
Copyright © 2020-2023  润新知