首页 > 解决方案 > 如何检查联合中的值是否包含在提取的联合中

问题描述

我需要了解来自联合类型的超的值是否与通过Extract.

它遵循一个示例,该示例显示了代码的工作版本,其中我接受了来自超集 ( Omni) 的类型化值,但我被迫复制定义子集类型 ( Mini) 的代码:

type Omni = 'a' | 'b' | 'c'
type Mini = Extract<Omni, 'c' | 'b'>

const isMini = (value: Omni): value is Mini =>  {
  /* This body works, but it contains a duplication of the values contained in Mini */
  return ['c', 'b'].includes(value)
  }

const included: Omni = 'b'
console.log(isMini(included)) // true
const excluded: Omni = 'a'
console.log(isMini(excluded)) // false

我对可以维护函数的类型签名isMini并且不包括值列表的重复的打字稿解决方案感兴趣。

注意:这里是操场

标签: typescript

解决方案


推荐阅读