5

If I have this ts module:

export function say(){
    console.log("said");
}

and I compile it with the amd option I can use it quite easily from a ts client :

import foo = module("tsmodule")
foo.say();

export var x = 123;

However if I have javascript equivalent to the ts module:

define(["require", "exports"], function(require, exports) {
    function say() {
        console.log("said");
    }
    exports.say = say;
})

There is no way to use it easily. The simplest possible solution:

// of course you can use .d.ts for requirejs but that is beside the point
declare var require:any;

// will fail with error module has not been loaded yet for context
// http://requirejs.org/docs/errors.html#notloaded
var useme = require("jsmodule")
useme.say();

export var x = 123;
import foo = module("tsmodule")
foo.say();

fails because of error http://requirejs.org/docs/errors.html#notloaded . Since "jsmodule" was not passed to the define call in the generated typescript.

The two workarounds I have

  • don't use import / export (language features lost)
  • use require([]) (still can't export something that depends on the require([]) call)

have limitations : https://github.com/basarat/typescript-requirejs . Is there another way? If not can you vote here : https://typescript.codeplex.com/workitem/948 :)

1 Answer 1

3

If you want to load in a JavaScript module you could always use the (badly documented) amd-dependency tag:

/// <amd-dependency path="jsmodule" />

This will put jsmodule in the dependency array of your define call.

And then provide a declaration file in which you would simply state

module useme {
    function say(): void;
}
Sign up to request clarification or add additional context in comments.

5 Comments

apparently an undocumented feature, and does not work with my tsc version 0.9.0 alpha. Let me uninstall / install to version 0.8
Aww shoot, they removed this in 0.9?! I'm using 0.8.1.1.
Works in 0.8.3 . But not in 0.9.0alpha
Good to know. I hope they include similar functionality in 0.9+ as I rely heavily on this feature
0.9a is supposed to have a few utility bits missing. Hopefully amd-dependency is one of these. I do hope they haven't removed it permanently.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.