我正在用VS Code为Chrome插件编写一些TypeScript。 TS转换为JS的效果很好,但是我的主要.ts文件足够大,我想将一些代码重构到一个单独的模块中。
我创建了一个文件common.ts,并将一些常量和函数移到了上面:
export function doSomething(foo : string): string { ... }
在主.ts文件中,我可以通过限定出口来引用这些出口,例如:
let result = common.doSomething("foo");
当前,我可以使用以下代码导入此代码:
import common = require("./common");
VS Code的自动完成或构建没有问题;但是,当我打开扩展程序时,出现错误:
未捕获的ReferenceError:在popup.ts:2上未定义define
这指向生成的JavaScript的这一部分:
define(["require", "exports", "./common"], function (require, exports, common) {
我的tsconfig.json当前为:
{
"compilerOptions": {
"target": "es6",
"module": "amd",
"sourceMap": true
}
}
我尝试使用“ commonjs”模块,但我已阅读到浏览器不支持该模块。即使这样,当我尝试时,也会收到类似的错误,未定义“ exports”:
Object.defineProperty(exports,“ __esModule”,{value:true});
我也尝试过使用“系统”模块,但是在未定义“系统”的情况下也会发生同样的事情:
System.register([“ ./ common”],函数(exports_1,context_1){
最后是“ es2015”,它要求我导入为import * as common from "./common";
。此行代码完全在.js文件中复制,Chrome给了我错误:
未捕获的SyntaxError:意外令牌*
我还将目标从es6更改为其他各种目标,并尝试导入为import { doSomething } from "./common"
。
配置tsconfig.json以编写模块的合适方法是什么(nb:我没有在common.ts中使用module
或namespace
关键字:这只是一系列导出语句),然后导入该模块,以便我可以清理此代码并在浏览器中使用它?