【发布时间】:2021-09-04 02:01:37
【问题描述】:
我正在尝试通过OpenTok API 使用“信号”事件来发布/订阅来实现聊天。
这是我工作的事件监听器(接收到信号):
// Listen for signal CHAT_MESSAGE
sess.on('signal:CHAT_MESSAGE', event => {
const message = event.data
...
})
问题是 typescript 无法将 event.data 识别为有效属性。类型来自 Session 类:
Session.signal: Event<'signal', Session> & {
type?: string;
data?: string;
from: Connection;
};
我尝试从 Session 类中选择类型,例如
const message = event.data as Session['signal']
Typescript 抱怨 Property 'data' does not exist on type 'Event<string, any>'. 我怀疑是因为 TS 无法正确识别事件类型...
然后我尝试先转换为“未知”:
const signal = (event as unknown) as Session['signal']
const msg = signal.data
现在 TS 抱怨:Property 'data' does not exist on type '(signal: { type?: string | undefined; data?: string | undefined; to?: Connection | undefined; }, callback: (error?: OTError | undefined) => void) => void'.ts(2339)
我不知道为什么它不认为 data 是一个道具,同时它似乎说它是......
如何解决这个问题,最好不要禁用 TS 类型检查?
【问题讨论】:
-
你可能会觉得这篇文章很有趣catchts.com/publish-subscribe
标签: typescript opentok