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