gpt4 book ai didi

javascript - TypeScript:具有空对象的可区分联合

转载 作者:行者123 更新时间:2023-11-30 20:07:43 25 4
gpt4 key购买 nike

我有以下类型的用户:

type User = {
name: string;
email: string;
} | {};

所以本质上,用户可以是具有名称和电子邮件属性的对象,也可以是空对象。

当我尝试检查给定的用户对象是哪个时,TypeScript 显示错误。

if (user.name) { // ERROR
// do something if user object is populated
}

特别是上面的代码抛出了错误:

Property 'url' does not exist on type 'PrismicImage'.
Property 'url' does not exist on type '{}'

是否可以有一个接口(interface)是空对象的有区别的联合?

最佳答案

您可以 https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-the-in-operator

if (user.name) { // error
user // typeof user is User | {}
user.name // error
user.email // error
}

if ('name' in user) {
user // ok, typeof user is User
user.name // string
user.email // string
}

tsplayground

关于javascript - TypeScript:具有空对象的可区分联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52708347/

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