gpt4 book ai didi

TypeScript:仅从联合中排除精确的 {}

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:39 26 4
gpt4 key购买 nike

我有一个像这样的联合类型:

type T = {} | ({ some: number } & { any: string })

那我怎样才能把这个类型缩小到后者呢?当然这是行不通的:

type WithEntries = Exclude<T, {}>

导致从不

这可能吗?

最佳答案

给你

type T = {} | ({ some: number } & { any: string })

type X<T> = T extends {} ? ({} extends T ? never : T) : never;

type WithEntries = X<T>; // { some: number; } & { any: string; }

第一个条件' distributes ' 联合类型的部分,以便第二个条件可以通过将空类型转换为 never 来“过滤掉”空类型,结果是 union of never | (T 的非空部分),和 union never | P 只是 P 对于任何 P

想法来了from this answer .

关于TypeScript:仅从联合中排除精确的 {},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53565879/

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