ES6 - 如何声明隐式 class 成员?
ES6 - How to declare implicit class member?
如果 class 成员由某些选项创建,如何声明它们?
class cls {
constructor(options) {
Object.assign(this, {
arr: [],
}, options);
this.arr[0] = 1; // <- IDE thinks that arr is an unresolved variable
}
}
如果您使用的是 Babel,则可以改用 class property:
class cls {
arr = []
constructor(options) {
Object.assign(this, options);
this.arr[0] = 1;
}
}
只是不要使用 Object.assign
创建具有默认值的属性。写入
class cls {
constructor(options) {
this.arr = [];
Object.assign(this, options);
this.arr[0] = 1; // should work now
}
}
为了让 class 属性 未明确定义为被 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 和 class field proposal 中,需要在 Babel 中预设阶段 3(或更低):
class cls {
arr = [];
constructor(options) {
Object.assign(this, options);
this.arr[0] = 1;
}
}
Class 字段在构造函数主体之前计算,ES.next 选项是 ES6 选项的语法糖。这两个选项相同并被 IDE.
识别
如果 class 成员由某些选项创建,如何声明它们?
class cls {
constructor(options) {
Object.assign(this, {
arr: [],
}, options);
this.arr[0] = 1; // <- IDE thinks that arr is an unresolved variable
}
}
如果您使用的是 Babel,则可以改用 class property:
class cls {
arr = []
constructor(options) {
Object.assign(this, options);
this.arr[0] = 1;
}
}
只是不要使用 Object.assign
创建具有默认值的属性。写入
class cls {
constructor(options) {
this.arr = [];
Object.assign(this, options);
this.arr[0] = 1; // should work now
}
}
为了让 class 属性 未明确定义为被 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 和 class field proposal 中,需要在 Babel 中预设阶段 3(或更低):
class cls {
arr = [];
constructor(options) {
Object.assign(this, options);
this.arr[0] = 1;
}
}
Class 字段在构造函数主体之前计算,ES.next 选项是 ES6 选项的语法糖。这两个选项相同并被 IDE.
识别