DX(デジタルトランスフォーメーション) / Google Apps Script / Programming

Google Apps Scriptでクラスのフィールドの宣言ができない時の回避策

ひさーしぶりにGoogle Apps Script(以下GAS)を触ってみたら、クラスのstaticなフィールド宣言やpublicなフィールド宣言ができませんでした
色々調べた結果と回避策を載せておきます!!

調べた内容

調べた結果、下記がヒットしました
上のリンクは今回の記事の内容と全く同じで、パブリッククラスのフィールド宣言をしようとすると「ParseError」が表示される問題のstack overflowの投稿です
下はそちらに対する回答として提示されているリンクで、クラスでstaticなフィールドの宣言ができないバグのissueトラッカーの投稿です

参考内容
How to declare Class Fields
Add support for static class properties

調べた結果

今回エラーを出力しているparserに問題があるようです
GAS自体はパブリックなクラスフィールドの宣言やstaticなフィールドの宣言をサポートしていますが、parserの問題があるため今回のエラーが出力されているようです

回避策

下記のようにクラスのコンストラクタ内で宣言すれば使用できます

class ClassAAA {
  constructor() {
    this.id = 1;
  }

  aaaa() {
    console.log(this.id);
  }
}

function test() {
  const classAAA = new ClassAAA();
  classAAA.aaaa(); // 1
}

本来、よくはないですが仕方ないですね。。。
ちなみにstaticなフィールドは下記のように回避できます

class ClassBBB {
  static aaaa(){return 5;}
}

function test() {
  const classBBB = new ClassBBB();
  console.log(classAAA.aaaa()); // 5
}

ほかにも質問等があればお気軽にコメントまでお願いします🙇‍♂️

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です