【问题标题】:Is there a way in TypeScript to say "Include" (opposite of Exclude)?TypeScript 中有没有办法说“包含”(与排除相反)?
【发布时间】:2022-06-29 02:56:31
【问题描述】:

我有一个字符串联合,看起来像: type AlphabetLike = 'a' | 'b' | 'c' | 'zeta' | 'beta' | 'gamma' | 'mu'; 我希望能够构造类型 type Alphabet = 'a' | 'b' | 'c'。我可以通过使用 Exclude 并删除 zeta、beta、gamma 和 mu 来做到这一点,但是要删除很多东西,如果向 AlphabetLike 添加更多值,它会改变 Alphabet。我想知道我在“AlphabetLike”中的值是否曾经从该类型中删除。

有没有办法执行包含而不是排除?

【问题讨论】:

    标签: reactjs angular typescript strong-typing


    【解决方案1】:

    双重“排除”可以充当包含。

    首先,如果您使用 exclude,请创建一个包含所有要排除的项目的列表。

    type GreekAlphabet = Exclude<AlphabetLike, 'a' | 'b' | 'c'>
    

    这会产生一个集合: 'zeta' | 'beta' | 'gamma' | 'mu' 我们可以将该集合与 Exclude 一起使用,以返回我们想要的值:

    type Alphabet = Exclude<AlphabetLike, GreekAlphabet>
    

    这会导致: 'a' | 'b' | 'c' 这实际上是Include&lt;AlphabetLike, 'a'|'b'|'c'&gt;,如果正在使用的选项从“AlphabetLike”中删除,它将保护您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-05
      • 2018-06-23
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 2017-06-03
      相关资源
      最近更新 更多