export interface TEST {
action: 'action1' | 'action2' | 'action3',
params: User | BadUser
}
interface User {
name: string | null,
date: string | null,
...
}
interface BadUser {
badName: string | null,
badDate: string | null,
...
}
如何正确访问someUser.params.name或某些BadUser.params.badName?
3条答案
按热度按时间mklgxw1f1#
您可以使用
in
operator检查params
上是否存在字段:Playground
cclgggtu2#
我不确定您所说的“正确访问属性”是什么意思,所以我假设两种可能的情况
1.您希望确保
params
的类型为User
,以便可以访问params.name
,反之亦然创建一个type guard
方法来检查哪个接口与对象匹配您可以在 typescript 手册中找到更多关于类型保护的信息。
1.您希望intellisense将这两个定义都添加到对象中,以便接受所有四个属性。在这种情况下,您需要从
Union
更改为Intersection
这样,就有必要同时注意这两种类型。
您可以在旧的打字手册中找到更多关于交集类型的信息。
我希望这些能解决你的问题。
mepcadol3#