下面是我的自定义接口,带有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
可以是类型TokenMessage
、TopicMessage
或ConditionMessage
中的任何一个。
type Message = TokenMessage | TopicMessage | ConditionMessage;
它使用的是TypeScript联合类型,我建议阅读一下。
由于Message
可以是这些类型中的任何一种,因此不能保证具有token
属性。只有TokenMessage
保证具有token
属性。如果您想假设消息始终是TokenMessage
,那么在使用它之前,您应该检查该属性是否存在(或强制转换类型(:
const payload = something.messagePayload
if (payload.token) {
const token = payload.token
}