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识别.

上一篇:java – 如何记录匿名函数?


下一篇:python检测音频静音段并添加静音段