实现一个类型安全的小型断言库is

实现一个类型安全的小型断言库is。先草拟类型。实现之后,可以像下面这样使用:

// 字符串与字符串比较
is('string', 'number') // false

// 布尔与布尔
is(true, false) // false

// 数字
is(45, 45) // true

// 比较两个不同的类型的值应该抛出编译时错误

is(10, 'f00') // Error Argument of type '"foo"' is not assignable to paramter of tye 'number'

// (有难度) 可以传入任意个参数
is([1], [1,2], [1,2,3])

function is<T>(a: T, ...b: [T, ...T[]]): boolean {
  return b.every(_ => _ === a)
}
function is<T>(a: T, ...b: T[]){
  return b.every(_ => _ === a)
}

这不一样吗

阅读 1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题