Чтобы свойство класса, которое не было явно определено, было распознано IDE (Jetbrains PhpStorm / WebStorm), можно указать член с помощью JSDoc:
class cls {
/**
@name cls#arr
@type Array
*/
constructor(options) {...}
}
Поскольку присвоение свойства с помощью Object.assign
не дает дополнительных преимуществ, более естественным способом является явное определение свойства в this
(как упоминалось в других ответах).
В ES6:
class cls {
constructor(options) {
this.arr = [];
Object.assign(this, options);
this.arr[0] = 1;
}
}
В ES.next с предложением поля класса , требуется предустановка стадии 3 (или ниже) в Babel:
class cls {
arr = [];
constructor(options) {
Object.assign(this, options);
this.arr[0] = 1;
}
}
Поля класса оцениваются перед телом конструктора, опция ES.next является синтаксическим сахаром для опции ES6. Эти два параметра идентичны и распознаются в IDE.