Javascript 使用变量[WebStorm friendly]定义JSDoc类型
在下面的代码中,我想使用Javascript 使用变量[WebStorm friendly]定义JSDoc类型,javascript,webstorm,jsdoc,Javascript,Webstorm,Jsdoc,在下面的代码中,我想使用testSettings变量定义一个ApplicationSettings类型的形状,以便在useSettings函数IDE中知道settings对象上可以访问哪些属性: /** @typedef ApplicationSettings */ var testSettings = { apiService: {}, configuration: {} }; /** * @param {ApplicationSettings} settings */
testSettings
变量定义一个ApplicationSettings
类型的形状,以便在useSettings
函数IDE中知道settings
对象上可以访问哪些属性:
/** @typedef ApplicationSettings */
var testSettings = {
apiService: {},
configuration: {}
};
/**
* @param {ApplicationSettings} settings
*/
function useSettings(settings) {
console.log(settings.apiService); // apiService is not recognized here
console.log(settings.configuration); // same for configuration
}
不幸的是,在这种情况下,
@typedef
似乎不是有效的注释。如果不在JSDoc中明确指定其所有属性,是否可以告诉WebStorm应用程序设置类型应该是什么样子?为什么这里需要@typedef?以下语法有效:
var testSettings = {
apiService: {},
configuration: {}
};
/**
* @param {testSettings} settings
*/
function useSettings(settings) {
console.log(settings.apiService);
console.log(settings.configuration);
谢谢,这很有效,但是如果设置对象和函数在不同的模块中呢?我并不希望函数注释依赖于
testSettings
变量的确切名称。明天可以很容易地重命名它,从开发人员的角度来看,类型注释似乎更“永久”。