#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
, что значительно упрощает преобразование.