2014-03-31 70 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'變量的確切名稱。它可以很容易地在明天重新命名,從開發者的角度來看,類型註釋似乎更「永久」。 –