typescript - Moștenirea Google Apps Script pe V8


Am observat recent un comportament ciudat al motorului V8. Când se moștenește o clasă aflată într-un fișier separat, motorul nu recunoaște clasa de bază, de exemplu, următoarea configurație eșuează:

BaseFoo.ts

export class BaseFoo {}

SpecialFoo.ts

import { BaseFoo } from "./BaseFoo";

class SpecialFoo extends BaseFoo {}

cu o eroare:

ReferenceError: BaseFoo nu este definit [linie: 1, funcție: , fișier: SpecialFoo]

Dacă cele două clase sunt puse în același fișier, funcționează.

Folosesc Visual Studio Code și aceasta configurație este aprobată (adică nu are greșeli de tipar).

Vreo idee?

Răspuns #1

Așa cum este menționat pe pagina lor V8 Runtime:

Atenție: modulele ES6 nu sunt încă acceptate.

Aceasta înseamnă că exportarea și importarea fișierelor nu sunt gestionate de Google Apps Script. Acest lucru este puțin ciudat, deoarece toate fișierele sunt în domeniul global (și în ordinea în care fișierele sunt listate), astfel încât poți face referire la Clase din alte fișiere.

Răspunsul #2

Așa cum a menționat Sunny Patel, runtime-ul V8 nu suportă module. Totuși, ai putea să te uiți la Clasp și la funcția sa TypeScript, care suportă parțial module.

Legături conexe:

  • Documente despre caracteristica TypeScript
  • Ghidul Google pentru Typescript în Google Scripts, în care sugerează să folosești Clasp.
  • Autocompletarea funcțiilor Google Scripts în VS Code