作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我有这样的类型声明:
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/
我确信一定有什么东西可以为我做到这一点。 我有一个显示项目列表的网络用户界面。如果你点击一个项目,会发生两件事: UI 将使用立即可用的信息进行更新,然后将发出异步请求以获取更多信息。完成后,它将更新
我是一名优秀的程序员,十分优秀!