gpt4 book ai didi

TypeScript 查找/条件类型和联合

转载 作者:行者123 更新时间:2023-12-05 00:48:25 25 4
gpt4 key购买 nike

我有一个简单的问题:是否可以在 TypeScript 中获取联合的一部分的类型?

例如,您可以经常使用如下查找类型:

interface Person {
name: string;
}

type Name = Person['name']

现在,我假设这样的联合是不可能的:

type Entity = 
{ __type: 'Company', name: string }
| { __type: 'Employee', firstName: string };

那么,有没有什么方法可以得到工会的一部分呢?像这样的:

type Company = DoTheMagic<Entity, { __type: 'Employee' }> 

const company: Company = ...;

console.log(company.name) // OK
console.log(company.firstName) // Compile error

最佳答案

我们可以使用条件类型Extract<T, U> .如果 T是一个联合,Extract 的结果将是 T 的所有成员满足约束 U 的联合(又名,T extends U)

type Company = Extract<Entity, { __type: 'Employee' }>  
// Same as
type Company = {
__type: "Employee";
firstName: string;
}

关于TypeScript 查找/条件类型和联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285374/

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