gpt4 book ai didi

typescript - 从对象联合中省略一个对象

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

我使用的库将类型定义为:

export declare type LogInResult = {
type: 'cancel';
} | {
type: 'success';
accessToken: string | null;
idToken: string | null;
refreshToken: string | null;
user: GoogleUser;
};

我想通过省略 { type: 'cancel' } 对象来创建类型 SuccessLoginResult ,这可能吗?

我尝试的一些伪代码不起作用:

type SuccessLoginResult = Omit<LogInResult, { type: 'cancel' }>

最佳答案

您可以使用Exclude为此(但请继续阅读):

type SuccessLogInResult = Exclude<LogInResult, {type: 'cancel'}>;

它通过从第一个(联合)类型中排除第二个类型来创建类型。

Playground link

看起来您可以使用 Extract同样,这可能更直观:

type SuccessLogInResult = Extract<LogInResult, {type: 'success'}>;

我本以为我必须在第二个类型参数中包含不仅仅是 type ,但显然不是,因为它似乎有效:

Playground link

关于typescript - 从对象联合中省略一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65508912/

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