I completely agree that this is not clear at all, right now.
Documentation
There does not seem to be official support for integrated documentation (docstring) at the moment, though tinymist does its best to interpret comments starting with /// as such: see Code Documentation - Tinymist Docs
There seems to be some agreement that once HTML output is supported, the syntax should approximately follow what’s being supported by current doc-generator project tidy.
Typing
Typst is dynamically typed so nothing about type hint (yet) though I think tinymist detects if your function starts with some assert(type(body) == content).
The documentation may indicate what types are acceptable for each argument, see tidy examples.
Arguments
By checking the arguments and function documentation, you can gather that there are exactly two kinds of arguments : required positionals and optional named arguments with a default value. Note that the named argument can be given in any position, there is no requirement for them to all be after or before the positionals.
If there is a [] argument, this will provide the value of the last non-provisioned positional argument (even if it should not be of type content, thus crashing with a type error), you can use several [] as long as the corresponding positional arguments are not already given (and content is acceptable). This is why the content argument is usually the last positional in most functions.