【问题标题】:Define JSDoc type using a variable [WebStorm-friendly]使用变量定义 JSDoc 类型 [WebStorm 友好]
【发布时间】:2014-03-31 23:31:22
【问题描述】:

在下面的代码中,我想使用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 在这种情况下似乎不是一个有效的注释。是否可以告诉 WebStorm ApplicationSettings 类型应该是什么样子,而无需在 JSDoc 中明确指定其所有属性?

【问题讨论】:

    标签: javascript webstorm jsdoc


    【解决方案1】:

    这里为什么需要@typedef?以下语法有效:

    var testSettings = {
        apiService: {},
        configuration: {}
    };
    
    /**
     * @param {testSettings} settings
     */
    function useSettings(settings) {
        console.log(settings.apiService); 
        console.log(settings.configuration);
    

    【讨论】:

    • 谢谢,这行得通,但是如果设置对象和函数在不同的模块中怎么办?我真的不希望函数注释依赖于testSettings 变量的确切名称。明天可以轻松重命名,从开发人员的角度来看,类型注释似乎更“永久”。
    猜你喜欢
    • 2020-04-02
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多