gpt4 book ai didi

typescript - 你能从现有类型中创建更小、更受限制的类型吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:42 25 4
gpt4 key购买 nike

假设我有这样的类型声明:

type Foo = 'a' | 'b' | 'c';
type Bar = 'a' | 'b' ;

是否可以将 Bar 表示为 Foo 的子集?

我知道总是可以将 Foo 表示为 Bar 的超集,但在我的情况下,相反的方式会更符合领域。

最佳答案

您只需使用Exclude pre-defined conditional type :

type Foo = 'a' | 'b' | 'c';
type Bar = <b>Exclude</b><Foo, 'c'>;

const Bar = 'a';

请注意以下工作正常,即使乍一看可能感觉不对:

type Bar = Exclude<Foo, 'd'>

参见 playground .


您也可以将它与 index types 结合使用出于有趣的目的:

type Foo = 'a' | 'b' | 'c';
type AnObject = { c: boolean }
type Bar = Exclude<Foo, keyof AnObject>

const myVar: Bar = "a";

关于typescript - 你能从现有类型中创建更小、更受限制的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com