如何使用嵌套结构记录ES6类成员?

时间:2016-05-11 12:25:06

标签: javascript documentation ecmascript-6

是否有可接受的方式(最好是IDE兼容)来记录ES6中的形状嵌套成员?

例如

class Foo extends React.Components {
    constructor(props) {
       super(props);
       this.props.bar; // Webstorm for example will think 'bar' is not a member of props
    }
}

我们可以做些什么来帮助IDE理解我们班级成员的预期结构?类似的东西:

/** @member {string} props.bar **/ 

在类声明或构造函数的顶部

1 个答案:

答案 0 :(得分:1)

@property有点起作用,但感觉不稳定。

/**
 * @property {object} props
 * @property {number} props.bar
 */
class Foo extends React.Components {
    constructor(props) {
        super(props);
    }
}

丑陋,但像发条一样工作:

class Foo extends React.Components {
    constructor(props) {
        super(props);

        /** @type {{foo: {bar: {}}}} */
        this.props = this.props;
    }
}