将Typescript与Google Apps脚本一起使用

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

我想在我的Google Apps脚本(GAS)项目中使用Typescript,但我找不到将代码编译成GAS接受的内容的方法。

GAS不支持导出,而且Typescript似乎不喜欢通过全局范围访问变量(它需要import / require,因此导出)。

我正在寻找以下任何一种解决方案,我相信这些解决方案会让我的工作变得有用:

1)Babel插件或类似的东西,可以删除所有导入和导出语句及其属性名称(要求我不使用相同的方法名称,我不这样做。

所以:

import MyLibrary from './library';
export function greetJohn() { MyLibrary.greet('John'); }
export default { greetJohn }

变为:

function greetJohn() { greet('John'); }

2)更改打字稿,以便它可以看到全局范围

3)将所有.ts文件组合成一个.js文件的Babel插件或类似物,并通过将每个文件视为对象/函数来转换导入/导出语句。

typescript google-apps-script commonjs clasp
2个回答
1
投票

现在可以使用Typescript开发Google Apps脚本项目,但这不能直接在Apps脚本编辑器上完成。

根据Develop Apps Script using TypeScript,更简单的方法是使用clasp

有关


2
投票

过去几周我一直在研究类似的场景(不使用TypeScript,但仍然使用ES6 / ES7)。

我发现一些你可能会发现有助于实现目标的东西:

  • GAS webpack plugin允许您通过检测何时分配给全局对象然后生成GAS可以运行的顶级函数来使用webpack在GAS中加载模块。这意味着您的导入和导出都将由webpack处理,因此您不必删除它们。
  • 我无法使用import * as x from y语法,但import { x } from yimport x from y在使用webpack时工作正常。
  • 您可以使用HTML loader将HTML作为字符串包含在捆绑包中。

如果您不想使用webpack,一种解决方案是将所有代码放在一个app.ts文件中,创建一个包含所有函数的对象,将函数设置为顶级,以便GAS可以选择它们。您还可以导出容器对象并在测试套件中使用它。使用Babel进行编译时,请使用babel-plugin-transform-remove-export插件删除导出语句。

const app = {
  onInstall: () => { ...
  },
  onOpen: () => { ...
  }
}

const { onOpen, onInstall } = app;

export { app };
© www.soinside.com 2019 - 2024. All rights reserved.