Bucklescript позволяет определять необработанные вызовы функций js, но мне не ясно, как следует обрабатывать возвращаемый тип. Кажется, можно использовать любой тип, и он все равно будет работать. Например, этот код компилируется и работает без проблем:
let f = [%raw {|
function() {
return 4;
}
|}]
let x : (string option) list = f ()
Компилятор не будет жаловаться, что x имеет тип (string option) list
или любой другой поддельный тип. Обычно я просто полагался бы на определение типа, но я хочу присвоить результат необработанного вызова функции js полю в структуре, поэтому мне нужно определить тип для этого поля в определении типа структуры. Кажется, я также могу использовать любой тип, и он все равно будет работать. Это ожидаемое поведение? Есть ли какие-то рекомендации по работе с этими случаями?