Search code examples
javascripttypescriptamd

Can TypeScript output an anonymous AMD module output, instead of named?


TypeScript tsc outputs something like

define("app", ["require", "exports", "foo", function(foo) {
    // ...
});

Can we make it output an anonymous module like

define(["require", "exports", "foo", function(foo) {
    // ...
});

Solution

  • It depends.

    TypeScript emits named defines when --outFile option is present, requesting it to generate single file (bundle) containing all compiled modules. Then, when module format is amd, each module will be represented as named define call, because AFAIK it does not make sense to have multiple anonymous defines in one file.

    Anonymous define is emitted when --outFile is absent, then you have either --outDir or default behavior of generating .js files next to .ts files, and for amd module format each module is emitted as separate file that contains anonymous define.