微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – ES6 – 如何声明隐式类成员?

如果类成员是从某些选项创建的,那么如何声明它们?

class cls {

    constructor(options) {

        Object.assign(this, {
            arr: [],
        }, options);

        this.arr[0] = 1; // <- IDE thinks that arr is an unresolved variable
    }
}

解决方法:

为了使未明确定义的类属性被IDE(Jetbrains PHPStorm / WebStorm)识别,可以使用JSDoc指定成员:

class cls {
    /**
     @name cls#arr
     @type Array
     */

    constructor(options) {...}
}

由于使用Object.assign进行属性赋值不会提供额外的好处,因此更自然的方法是在此明确定义属性(如其他答案所述).

在ES6中:

class cls {
   constructor(options) {
        this.arr = [];

        Object.assign(this, options);

        this.arr[0] = 1;
    }
}

在带有class field proposal的ES.next中,需要在Babel中预设第3阶段(或更低):

class cls {
   arr = [];

   constructor(options) {
        Object.assign(this, options);

        this.arr[0] = 1;
    }
}

在构造函数体之前评估类字段,ES.next选项是ES6选项的语法糖.这两个选项是相同的,并由IDE识别.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐