Skip to content

Latest commit

 

History

History
36 lines (27 loc) · 1.28 KB

CheckRepeatedTuple.md

File metadata and controls

36 lines (27 loc) · 1.28 KB
标题 标签
CheckRepeatedTuple(检查元组是否含有重复元素) extends,infer(继承,推断)

检查元组是否含有重复元素。

  • 使用 infer 推断数组第一项和剩余项,如果剩余项中存在和第一项匹配的类型,则返回 true,否则递归剩余项,否则返回 false。

代码如下:

type CheckRepeatedTuple<T extends any[]> = T extends [infer F, ...infer R]
  ? F extends R[number]
    ? true
    : CheckRepeatedTuple<R>
  : false;

使用方式:

type CheckRepeatedTupleRes1 = CheckRepeatedTuple<
  [number, number, string, boolean]
>; // true
type CheckRepeatedTupleRes2 = CheckRepeatedTuple<[number, string]>; // false
type CheckRepeatedTupleRes3 = CheckRepeatedTuple<[1, 2, 3]>; // false
type CheckRepeatedTupleRes4 = CheckRepeatedTuple<[1, 2, 1]>; // true
type CheckRepeatedTupleRes5 = CheckRepeatedTuple<[]>; // false
type CheckRepeatedTupleRes6 = CheckRepeatedTuple<string[]>; // false

应用场景

如下所示,鼠标悬浮到对应的类型变量可以查看类型。