Проверка типов в плагине React Native

#java #android #react-native #api-design #duck-typing

#java #Android #реагировать-родной #api-дизайн #утиный ввод

Вопрос:

У нас есть плагин 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)?

Я хочу, чтобы клиент либо знал, что он должен устранить проблему, либо чтобы метод мог «просто работать» с чем угодно.

Ответ №1:

Я бы посоветовал вам также создать слой js и отправлять как native, так и js вместе. В модуле js вы можете обрабатывать этот вызов любым удобным для вас способом. Вы можете ввести там проверку и показать предупреждение или преобразовать в строку.

Другим вариантом было бы передать в качестве параметра не число, а объект. Затем в Java вы получите a ReadableMap , что значительно упрощает преобразование.