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
变量的确切名称。明天可以很容易地重命名它,从开发人员的角度来看,类型注释似乎更“永久”。