(TS2339)属性"token"在打字稿中的类型"主题消息"上不存在



下面是我的自定义接口,带有firebase管理消息接口

interface PushPayload {
userId: number
conId?: number
pushLogCodeKey: string
messagePayload: admin.messaging.Message
}

我试着获得代币

const blah = something.messagePayload.token

但我得到了一个错误代码ts(2339(。在firebase管理模块中,assign语句中有一些单行。我的问题和他们之间有什么联系吗?

下面是接口类型。

interface TokenMessage extends BaseMessage {
token: string;
}
interface TopicMessage extends BaseMessage {
topic: string;
}
interface ConditionMessage extends BaseMessage {
condition: string;
}
export namespace admin.messaging {
type Message = TokenMessage | TopicMessage | ConditionMessage;
...
}

我的打字脚本版本是3.9.7,firebase管理版本是9.2.0

我很抱歉让你读我糟糕的英语。

这行代码声明类型Message可以是类型TokenMessageTopicMessageConditionMessage中的任何一个。

type Message = TokenMessage | TopicMessage | ConditionMessage;

它使用的是TypeScript联合类型,我建议阅读一下。

由于Message可以是这些类型中的任何一种,因此不能保证具有token属性。只有TokenMessage保证具有token属性。如果您想假设消息始终是TokenMessage,那么在使用它之前,您应该检查该属性是否存在(或强制转换类型(:

const payload = something.messagePayload
if (payload.token) {
const token = payload.token
}

相关内容

  • 没有找到相关文章