如何在不将相关代码作为模块的情况下导入TypeScript AMD模块

时间:2015-01-20 23:13:50

标签: google-chrome-extension requirejs typescript amd

我有一个Chrome扩展程序内容脚本,它有2个AMD依赖项。当我使用requirejs“require”函数加载依赖项时,脚本工作正常。

我用我项目的其余部分将脚本移植到TypeScript,现在正在使用

import Dependency = require(“Dependency”);

这一切都很好,花花公子,模块已移植到TS,并在项目的其他部分正常工作。

我的问题是,只要我添加一个import语句,TS编译器就想将我的脚本变成一个模块,并且在生成的JS中,它使用requirejs“define”导入模块。我的chrome扩展程序对此并不太兴奋,当我运行它时,我得到一个“不匹配的匿名定义”错误。

有没有办法让typescript编译器使用require函数加载我的模块而不是让我的脚本成为一个模块?我很难找到关于此的任何内容。

1 个答案:

答案 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();
相关问题