2014-03-31 41 views
2

在下面的代码定义JSDoc型我想限定使用testSettings变量ApplicationSettings型的形状,使得内部useSettings函数IDE将知道哪些属性的settings对象上访问:使用可变[WebStorm友好]

/** @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在这种情况下不是有效的注释。是否有可能告诉WebStorm如何在不显式指定JSDoc中的所有属性的情况下显示类型?

回答

0

为什么你需要@typedef在这里?下面的语法的工作原理:

var testSettings = { 
    apiService: {}, 
    configuration: {} 
}; 

/** 
* @param {testSettings} settings 
*/ 
function useSettings(settings) { 
    console.log(settings.apiService); 
    console.log(settings.configuration); 
+0

谢谢,这工作,但如果设置对象和函数是在不同的模块?我真的不希望函数注释依赖于'testSettings'变量的确切名称。它可以很容易地在明天重新命名,从开发者的角度来看,类型注释似乎更“永久”。 –