如何声明类字段

问题描述 投票:0回答:3

我正在尝试使用 Google Apps 脚本上的某些字段创建一个

class
。我什至无法保存文件。根据我对这个SO答案的理解,我对类字段使用了正确的语法。

V8 运行时 已启用。

错误:

Syntax error: ParseError: Unexpected token = line: 5 file: Airtable_Class.gs

第 5 行是:

foo = "bar";

这是完整的代码:

class FieldsTest{
  foo = "bar";
}

javascript class google-apps-script syntax-error v8
3个回答
6
投票

这是一个已知问题。如果您希望实施此问题,请在问题上加星号(左上角★)。

https://issuetracker.google.com/issues/195752915

根据tracker,是支持的,但是被解析器屏蔽了


1
投票

有一种方法可以在 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,因为该对象生成了两次。


0
投票

虽然 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
© www.soinside.com 2019 - 2024. All rights reserved.