通常我会这样做:
var tagSymbols = Object.freeze([
'!',
'+',
'@'
]);
但后来我知道Babel(?)中有const
。
const tagSymbols = Object.freeze([
'!',
'+',
'@'
]);
两者都返回相同的错误:
Syntax error: Unexpected token (4:6)
2 |
3 | class GeneralToDoListInput extends Component {
> 4 | var tagSymbols = Object.freeze([
| ^
5 | '!',
6 | '+',
7 | '@'
Syntax error: Unexpected token (5:8)
3 | class GeneralToDoListInput extends Component {
4 |
> 5 | const tagSymbols = Object.freeze([
| ^
6 | '!',
7 | '+',
8 | '@'
答案 0 :(得分:8)
您不能将变量声明放在类主体中。语言不允许这样做。在ES6中,类声明的结构基本上是
class Foo() {
method1() {}
method2() {}
...
}
最简单的解决方案是将变量声明放在类之外:
const tagSymbols = ...:
class GeneralToDoListInput extends Component {
...
}
类/模块中的任何代码都可以访问tagSymbols
。
如果它必须是一个类属性,你可以定义一个静态getter:
class GeneralToDoListInput extends Component {
static get tagSymbols() {
return Object.freeze(...);
}
}
或者在声明后将其分配给班级:
class GeneralToDoListInput extends Component {
...
}
GeneralToDoListInput.tagSymbols = ...;