【JSDoc】アロー関数の引数にインラインで型指定する
困ったこと
JSDocで型指定していても、エディタやプロジェクトの設定によってはアロー関数の引数を正しく型補完してくれないことがある。
/** * @typedef User * @prop {string} name * @prop {number} age *//** @type {User[]} */const users = [{ name: 'hoge', age: 20 }];
users.forEach((user) => { user.name; // => 未解決の変数 name});
例えば上記ではuser
がUser
ではなくany
と推論されてしまっている。
解決法
users.forEach((user) => {users.forEach((/** User */ user) => { user.name;});
/** @type User */
のように@type
タグを使わないのは違和感があるが、WebStormの場合エディタに認識させるためにはこの方法しか無いっぽい。