As far as I can tell:
Using @typedef
and @property
to define a custom type is the "correct" way in JSDoc. But it is cumbersome to write and ugly to read (a cardinal sin in documentation).
The record type is much neater (note the double {{
s):
/** {{
name:string,
lang:string
}} */