首页 > 其他分享 >[Typescript Challenges] 10. Medium - Include

[Typescript Challenges] 10. Medium - Include

时间:2022-09-02 20:34:17浏览次数:70  
标签:10 Typescript false _____________ type Challenges extends Expect true

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>>,
]

 

标签:10,Typescript,false,_____________,type,Challenges,extends,Expect,true
From: https://www.cnblogs.com/Answer1215/p/16651131.html

相关文章

  • P1005 [NOIP2007 提高组] 矩阵取数游戏 题解
    luogu原题传送门[NOIP2007提高组]矩阵取数游戏题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的\(n\timesm\)的矩阵,矩阵中的每个元素\(a_{i,j}\)均为非......
  • 「TYVJ1035」棋盘覆盖 解题报告
    「TYVJ1035」棋盘覆盖题目描述给出一张\(n\)(\(n<=100\))的国际象棋棋盘,其中被删除了一些点,问可以使用多少\(1*2\)的多米诺骨牌进行掩盖。输入第一行为\(n\),\(m\)(表......
  • P1042 [NOIP2003 普及组] 乒乓球
    题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 1111 分制改革引起了很大的争议,有一部分球员因为无法适应新......
  • 10_Linux基础-SHELL入门1
    @目录10_Linux基础-SHELL入门1一.输入输出重定向二.2个特殊文件三.heredocument四.tee命令五.清空文件内容六.SHELL入门SHELL的变量SHELL接收参数数据类型引号区别......
  • 记一次给win10客户电脑上装上tomcat程序后,启动出问题的情况
    情景描述本来是给一个客户安装我们公司的bs程序,以前也给其他公司安装过,问题都不大,这次客户因为在国外,使用向日葵进行远程操作,网络极度不稳地,超级卡,过程相当崩溃。不论是数......
  • Fast Bubble Sort (单调zai+倍增) (2022杭电多校10)
    VirtualJudge(vjudge.net)题目:题目大意:首先说明一个性质,A表示一个数组,B(A)表示把这段数组进行一遍冒泡排序的下沉操作,就是把大数沉底。然后题目给我们一个长度为n的......
  • 【Nginx运行报错】[alert] could not open error log file: CreateFile和 [emerg] 108
    第一个问题:[alert]couldnotopenerrorlogfile:CreateFile()“logs/error.log”failed(3:Thesystemcannotfindthepathspecified)(上文大致意思为)不能打开......
  • 10.业务功能实现---商品服务三级分类树形API
    1.商品服务三级分类树形API实体类,添加属性@Data@TableName("pms_category")publicclassCategoryEntityimplementsSerializable{privatestaticfinallong......
  • 浅谈10kV无扰动快切装置在煤矿电网中的应用
    10kV无扰动快切装置在煤矿电网的应用摘要:结合某煤矿公司10kV无扰动快切装置在变电站实际情况,对10kV无扰动快切装置的应用从动作原理、保护功能及应用等方面进行分析......
  • 1094 谷歌的招聘——20分
    2004年7月,谷歌在硅谷的101号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以.com结尾的网址,而前面的网址是一个10位素数,这个素数是自然常数......