我有一个Chrome扩展程序内容脚本,它有2个AMD依赖项。当我使用requirejs“require”函数加载依赖项时,脚本工作正常。
我用我项目的其余部分将脚本移植到TypeScript,现在正在使用
import Dependency = require(“Dependency”);
这一切都很好,花花公子,模块已移植到TS,并在项目的其他部分正常工作。
我的问题是,只要我添加一个import语句,TS编译器就想将我的脚本变成一个模块,并且在生成的JS中,它使用requirejs“define”导入模块。我的chrome扩展程序对此并不太兴奋,当我运行它时,我得到一个“不匹配的匿名定义”错误。
有没有办法让typescript编译器使用require函数加载我的模块而不是让我的脚本成为一个模块?我很难找到关于此的任何内容。
答案 0 :(得分:1)
处理此问题的最佳方法是使用commonjs
标志进行实际编译,并使用TypeScript编译器实际上不会发出require
语句的事实,如果模块导入未在价值立场。这类似于Modules in TypeScript页面中记录的“可选模块加载”高级方案。
示例代码:
declare var require: any; // If needed
import _a = require('Dependency');
import _b = require('SomeOtherDependency');
var a: typeof _a = require('Dependency');
var b: typeof _b = require('SomeOtherDependency');
// Use 'a' and 'b' in your code. Do not use _a or _b.
a.doSomething();