JS和iOS之间的类型安全

Type safety between JS and iOS

本文关键字:类型安全 之间 iOS JS      更新时间:2023-09-26

现在我们有一个javascript应用程序,它被拉入WKWebView。此应用程序通过事件触发消息。我们编写了一个中间层,用于侦听这些事件,进行一些解析,并将结果传递给iOS以进行一些本地工作。

这非常有效;然而,我们有点担心(并且已经看到)类型的安全问题的出现。如果JS API发生变化,那么iOS需要进行调整,并且没有真正的合同来确认一切正常。

我们提出了两个想法:

  • 执行合同的更多单元测试
  • 使用某种协议缓冲区类型策略来确保模式

有更好的方法吗?有没有一个好的协议缓冲区示例可以做这样的事情?

您可以尝试的一件事是将所有基元作为字符串发送,然后根据键名解析它们。例如,numUnits将始终是int,或者可能制定一些命名约定,使值的类型显而易见。

您甚至可以使每个值由2个键值对组成,一个用于值,一个用作类型。这会使JSON膨胀,但会使其类型安全。

例如{"numUnits":{"value":"5", "type":"int"}}