我正在尝试使用 Google Apps 脚本上的某些字段创建一个
class
。我什至无法保存文件。根据我对这个SO答案的理解,我对类字段使用了正确的语法。
V8 运行时 已启用。
错误:
Syntax error: ParseError: Unexpected token = line: 5 file: Airtable_Class.gs
第 5 行是:
foo = "bar";
这是完整的代码:
class FieldsTest{
foo = "bar";
}
这是一个已知问题。如果您希望实施此问题,请在问题上加星号(左上角★)。
https://issuetracker.google.com/issues/195752915
根据tracker,是支持的,但是被解析器屏蔽了
有一种方法可以在 Apps 脚本中模拟静态字段。它涉及使用属性而不是字段。我们可以使用以下代码创建一个延迟启动的属性,该属性将自身替换为一个字段:
class MyClass {
static get c() {
// Delete this property. We have to delete it first otherwise we cannot set it (due to it being a get-only property)
delete MyClass.c;
// Replace it with a static value.
return MyClass.c = {};
}
}
这种方法比使用静态属性更好,因为它在实例化静态对象或数组时也有效。为了确认这项工作,我们可以使用以下内容:
SpreadsheetApp.getUi().alert(MyClass.c === MyClass.c)
如果对象生成一次并存储,这只会评估为真。如果该字段仍然是一个属性,它将返回 false,因为该对象生成了两次。
虽然 Google Apps Script doesn't support static class fields, does support static methods/getters/setters, 所以你可以这样做:
class X {
// ⭐️ static getters & setters
static get a(){ return this._a || 0 } // this === X
static set a(value){ this._a = value } // this === X
}
然后你可以像往常一样获取/设置
X.a
:
X.a // get: 0.0
X.a = 3 // set: 3.0
X.a // get: 3.0