React Native 插件的类型检查

Type checking on React Native plugin

我们有一个 React Native 插件,可以桥接 iOS 和 Android 上的本地库。 这周有个客户反映他用起来有问题,方法如下(Android)

@ReactMethod
public void setUser(String id){
    Core.INSTANCE.setTag("uid", id);
}

我们遇到的问题是客户端是这样在js端使用这个方法的:

Library.setUser(3321) // Number instead of string

很明显,他在JS端没有报错;它只是忽略了这一行。 我的问题是,我可以在 JS 端进行类型检查以便客户端收到错误,还是我可以以鸭子打字的方式接受 JS 端的任何内容然后调用 .toString() 或 String(x)?

我希望客户要么知道他必须解决问题,要么让该方法能够“正常工作”。

我建议您也创建一个 js 层,并将本机和 js 一起发布。 在 js 模块中,您可以随意处理此调用。您可以在那里进行类型检查并显示警告,或转换为字符串。

另一种选择是传递一个对象而不是数字作为参数。然后在Java中,你会收到一个ReadableMap,这样转换就容易多了。