Asp.net mvc 用Typescript定义模块名

Asp.net mvc 用Typescript定义模块名,asp.net-mvc,requirejs,typescript,Asp.net Mvc,Requirejs,Typescript,我试图将TypeScript与RequireJS一起使用,但出现以下错误: 匿名define()模块不匹配 我理解这是因为Typescript没有发出模块名,我自己将脚本加载到页面中(我这样做是因为它们在MVC项目中被定义为预定义包) 当前输出的.js如下所示: define(["require", "exports", "jquery"], function(require, exports, $) {... ///<amd-module name='NamedModule'/>

我试图将TypeScript与RequireJS一起使用,但出现以下错误:

匿名define()模块不匹配

我理解这是因为Typescript没有发出模块名,我自己将脚本加载到页面中(我这样做是因为它们在MVC项目中被定义为预定义包)

当前输出的.js如下所示:

define(["require", "exports", "jquery"], function(require, exports, $) {...
///<amd-module name='NamedModule'/>
export class C {
}
当我需要它发射时:

define("MODULE_NAME" ["require", "exports", "jquery"], function(require, exports, $) {...

这在Typescript中是可能的,还是我应该考虑用Require.js自己的优化来替换捆绑包以实现最小化

问题不在代码生成中(这是正确的)。问题是您可能有一个脚本标记加载这个JavaScript文件。它只能由RequireJS加载,使用data main或作为另一个模块的依赖项

见:


删除脚本标记

如果您使用的是ASP.NET和集成版,则您是正确的:问题在于捆绑包包含多个匿名模块。虽然使用匿名模块(并让一些压缩器/优化器稍后进行命名)是一种好的、常见的做法,但这不适用于ASP.NET绑定,因为它只连接输入JS文件。解决方案是让TypeScript创建命名模块。这在TS中是可能的,所以你的问题的答案是

Typescript可以这样做吗

绝对是:是的

TypeScript 1.4添加了向编译器发射的功能,如下所示:

define(["require", "exports", "jquery"], function(require, exports, $) {...
///<amd-module name='NamedModule'/>
export class C {
}
///
出口丙类{
}