我們使用Webstorm和JSDoc來提供一些很好的建議功能,並在需要時使用類型文檔。JSDoc - 部分創建的類型定義
例如,這是用戶的定義,它在應用程序中多次使用。
/**
* Basic user object
* @typedef {Object} User
* @property {!Number} id - Unique identitifaction
* @property {!String} email - Email and username in once
* @property {!Boolean} enabled - True, if user can access the system
* @property {!Boolean} confirmed - True, if validation (i.e. through email) was successfull
*
* @property {?String} name - Name of user
*/
然後,我們可以通過用戶
/**
* return Detail of user
* @param {User} params
* @param {Options=} options
* @returns Promise.<User>
*/
exports.userDetail = (params, options = {}) => {
return userRepository.userDetail(params, options);
};
一些細節使用他,例如在服務方法的選擇到目前爲止它真正偉大的作品,當我在exports.userDetail
方法使用params
,它自動提示我們我們可以使用的領域,如果我們想。
問題是「在樹的頂端」。對於詳細例如標準CRUD操作使用該方法,並在此部分由ID僅選擇
/**
* @param {Number} req.userId
*/
exports.detail = (req, res, next) => {
return userService.userDetail({id: req.userId}).then(user => {
res.out = user;
return next();
}).catch(next);
};
然而{id: req.userId}
webstorm調用一個錯誤:「參數類型...是不能分配給參數類型用戶」
唯一的解決辦法是命名所有的屬性,否則它說這個。對於其他情況,這個警告真的很有用 - 它發現,如果你把數字字符串或像令牌誤入用戶等。但混合真正的錯誤,這使得它不太可靠。
任何人都有一些JSDoc或Webstorm的一般技巧?我沒有找到方法如何說「這個參數是用戶,即使沒有所有的字段,並不是所有的字段都是強制性的」。
在另一方面,我想在整個應用程序共享一個模型 - 我可以在每一個功能,這是正常工作
/**
* Register standard user
* @param {String} _params.email Unique email for registration, used also instead of username
* @param {String} _params.password Password for your account
* @param {Options=} options
*/
但是,當我們在很多O方法使用用戶編寫完整的定義,每一次變化就意味着大量的工作在整個應用程序更新(幾乎是不可能的,當它增長到足夠大)
不知道我跟着你...你可以嘗試定義你的屬性爲可選的 - 比如'@property {String} [email]' – lena
@lena:是的,它工作,出於某種原因Webstorm知道{String =}意思是可選的參數但不適用於財產。用[email]回答這個問題,我會接受你:) – libik