我想在我的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脚本项目,但这不能直接在Apps脚本编辑器上完成。
根据Develop Apps Script using TypeScript,更简单的方法是使用clasp。
有关
过去几周我一直在研究类似的场景(不使用TypeScript,但仍然使用ES6 / ES7)。
我发现一些你可能会发现有助于实现目标的东西:
import * as x from y
语法,但import { x } from y
和import x from y
在使用webpack时工作正常。如果您不想使用webpack,一种解决方案是将所有代码放在一个app.ts
文件中,创建一个包含所有函数的对象,将函数设置为顶级,以便GAS可以选择它们。您还可以导出容器对象并在测试套件中使用它。使用Babel进行编译时,请使用babel-plugin-transform-remove-export插件删除导出语句。
const app = {
onInstall: () => { ...
},
onOpen: () => { ...
}
}
const { onOpen, onInstall } = app;
export { app };