чтобы оно было Array<OtherStruct>?
Минимальный пример. Есть такая структура:
defmodule Users.Model.UsersRequest do
defstruct [
filters: nil,
sort: [],
pagination: %Users.Model.Pagination{},
]
def validate(data) do
result = validateSomehow(data)
case result do
{:error, error_body} -> {:error, error_body}
:ok -> {:ok, struct(__MODULE__, data)}
end
end
end
defmodule Users.Model.Pagination do
defstruct [
page: nil,
rowsPerPage: nil,
]
end
defmodule Users.Model.Sort do
defstruct [
field: nil,
direction: nil,
]
end
Вот в этой красоте как типизировать поле sort структуры Users.Model.UsersRequest, чтобы после struct(__MODULE__, data) его значение было типа Array<Sort>, если говорить джавовской нотацией?
использование типов https://hexdocs.pm/elixir/typespecs.html
а вот эта штука, например, есть инструмент проверки типов https://github.com/jeremyjh/dialyxir
Правильно понимаю, что мой кейс будет чем-то таким? @type sort() :: array(Sort.t())
Правильный ответ на этот вопрос: Не нужно проверять этот тип, нужно писать тесты. Желательно с фаззингом на StreamData, если есть подозрение того что что-то может пойти не так
вообще да), зря писали эту простыню, тут валидация на структуру нафиг не нужна
если возразить будет другая простыня, так что все равно
Ничего не зря! Очень полезно было. Для вас эта дискуссия тривиальная, а для бывшего ортодоксального джависта она очень ценная. Спасибо!
Ортодоксальный джавист должен уметь жить с непараметризованными коллекциями.
с тех пор как добавили дженерики уже выросло не одно поколение программистов
Обсуждают сегодня