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
}
ほかにも質問等があればお気軽にコメントまでお願いします🙇♂️